// GENERATED by the `generator` package — do not edit by hand.
// MoonBit dispatch wrappers for GL commands.

///|
let d_glAccum : Dispatch = Dispatch::new("glAccum")

///|
extern "c" fn epoxy_glAccum(fp : CPtr, op : UInt, value : Float) -> Unit = "epoxy_glAccum"

///|
pub fn gl_accum(op : UInt, value : Float) -> Unit {
  epoxy_glAccum(d_glAccum.get(), op, value)
}

///|
let d_glAccumxOES : Dispatch = Dispatch::new("glAccumxOES")

///|
extern "c" fn epoxy_glAccumxOES(fp : CPtr, op : UInt, value : Int) -> Unit = "epoxy_glAccumxOES"

///|
pub fn gl_accumx_oes(op : UInt, value : Int) -> Unit {
  epoxy_glAccumxOES(d_glAccumxOES.get(), op, value)
}

///|
let d_glActiveProgramEXT : Dispatch = Dispatch::new("glActiveProgramEXT")

///|
extern "c" fn epoxy_glActiveProgramEXT(fp : CPtr, program : UInt) -> Unit = "epoxy_glActiveProgramEXT"

///|
pub fn gl_active_program_ext(program : UInt) -> Unit {
  epoxy_glActiveProgramEXT(d_glActiveProgramEXT.get(), program)
}

///|
let d_glActiveShaderProgram : Dispatch = Dispatch::new("glActiveShaderProgram")

///|
extern "c" fn epoxy_glActiveShaderProgram(
  fp : CPtr,
  pipeline : UInt,
  program : UInt,
) -> Unit = "epoxy_glActiveShaderProgram"

///|
pub fn gl_active_shader_program(pipeline : UInt, program : UInt) -> Unit {
  epoxy_glActiveShaderProgram(d_glActiveShaderProgram.get(), pipeline, program)
}

///|
let d_glActiveShaderProgramEXT : Dispatch = Dispatch::new(
  "glActiveShaderProgramEXT",
)

///|
extern "c" fn epoxy_glActiveShaderProgramEXT(
  fp : CPtr,
  pipeline : UInt,
  program : UInt,
) -> Unit = "epoxy_glActiveShaderProgramEXT"

///|
pub fn gl_active_shader_program_ext(pipeline : UInt, program : UInt) -> Unit {
  epoxy_glActiveShaderProgramEXT(
    d_glActiveShaderProgramEXT.get(),
    pipeline,
    program,
  )
}

///|
let d_glActiveStencilFaceEXT : Dispatch = Dispatch::new(
  "glActiveStencilFaceEXT",
)

///|
extern "c" fn epoxy_glActiveStencilFaceEXT(fp : CPtr, face : UInt) -> Unit = "epoxy_glActiveStencilFaceEXT"

///|
pub fn gl_active_stencil_face_ext(face : UInt) -> Unit {
  epoxy_glActiveStencilFaceEXT(d_glActiveStencilFaceEXT.get(), face)
}

///|
let d_glActiveTexture : Dispatch = Dispatch::with_aliases("glActiveTexture", [
  "glActiveTextureARB",
])

///|
extern "c" fn epoxy_glActiveTexture(fp : CPtr, texture : UInt) -> Unit = "epoxy_glActiveTexture"

///|
pub fn gl_active_texture(texture : UInt) -> Unit {
  epoxy_glActiveTexture(d_glActiveTexture.get(), texture)
}

///|
let d_glActiveTextureARB : Dispatch = Dispatch::with_aliases(
  "glActiveTextureARB",
  ["glActiveTexture"],
)

///|
extern "c" fn epoxy_glActiveTextureARB(fp : CPtr, texture : UInt) -> Unit = "epoxy_glActiveTextureARB"

///|
pub fn gl_active_texture_arb(texture : UInt) -> Unit {
  epoxy_glActiveTextureARB(d_glActiveTextureARB.get(), texture)
}

///|
let d_glActiveVaryingNV : Dispatch = Dispatch::new("glActiveVaryingNV")

///|
#borrow(name)
extern "c" fn epoxy_glActiveVaryingNV(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Unit = "epoxy_glActiveVaryingNV"

///|
pub fn gl_active_varying_nv(program : UInt, name : Bytes) -> Unit {
  epoxy_glActiveVaryingNV(d_glActiveVaryingNV.get(), program, name)
}

///|
let d_glAlphaFragmentOp1ATI : Dispatch = Dispatch::new("glAlphaFragmentOp1ATI")

///|
extern "c" fn epoxy_glAlphaFragmentOp1ATI(
  fp : CPtr,
  op : UInt,
  dst : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
) -> Unit = "epoxy_glAlphaFragmentOp1ATI"

///|
pub fn gl_alpha_fragment_op1_ati(
  op : UInt,
  dst : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
) -> Unit {
  epoxy_glAlphaFragmentOp1ATI(
    d_glAlphaFragmentOp1ATI.get(),
    op,
    dst,
    dstMod,
    arg1,
    arg1Rep,
    arg1Mod,
  )
}

///|
let d_glAlphaFragmentOp2ATI : Dispatch = Dispatch::new("glAlphaFragmentOp2ATI")

///|
extern "c" fn epoxy_glAlphaFragmentOp2ATI(
  fp : CPtr,
  op : UInt,
  dst : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
) -> Unit = "epoxy_glAlphaFragmentOp2ATI"

///|
pub fn gl_alpha_fragment_op2_ati(
  op : UInt,
  dst : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
) -> Unit {
  epoxy_glAlphaFragmentOp2ATI(
    d_glAlphaFragmentOp2ATI.get(),
    op,
    dst,
    dstMod,
    arg1,
    arg1Rep,
    arg1Mod,
    arg2,
    arg2Rep,
    arg2Mod,
  )
}

///|
let d_glAlphaFragmentOp3ATI : Dispatch = Dispatch::new("glAlphaFragmentOp3ATI")

///|
extern "c" fn epoxy_glAlphaFragmentOp3ATI(
  fp : CPtr,
  op : UInt,
  dst : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
  arg3 : UInt,
  arg3Rep : UInt,
  arg3Mod : UInt,
) -> Unit = "epoxy_glAlphaFragmentOp3ATI"

///|
pub fn gl_alpha_fragment_op3_ati(
  op : UInt,
  dst : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
  arg3 : UInt,
  arg3Rep : UInt,
  arg3Mod : UInt,
) -> Unit {
  epoxy_glAlphaFragmentOp3ATI(
    d_glAlphaFragmentOp3ATI.get(),
    op,
    dst,
    dstMod,
    arg1,
    arg1Rep,
    arg1Mod,
    arg2,
    arg2Rep,
    arg2Mod,
    arg3,
    arg3Rep,
    arg3Mod,
  )
}

///|
let d_glAlphaFunc : Dispatch = Dispatch::new("glAlphaFunc")

///|
extern "c" fn epoxy_glAlphaFunc(fp : CPtr, func : UInt, ref_ : Float) -> Unit = "epoxy_glAlphaFunc"

///|
pub fn gl_alpha_func(func : UInt, ref_ : Float) -> Unit {
  epoxy_glAlphaFunc(d_glAlphaFunc.get(), func, ref_)
}

///|
let d_glAlphaFuncQCOM : Dispatch = Dispatch::new("glAlphaFuncQCOM")

///|
extern "c" fn epoxy_glAlphaFuncQCOM(
  fp : CPtr,
  func : UInt,
  ref_ : Float,
) -> Unit = "epoxy_glAlphaFuncQCOM"

///|
pub fn gl_alpha_func_qcom(func : UInt, ref_ : Float) -> Unit {
  epoxy_glAlphaFuncQCOM(d_glAlphaFuncQCOM.get(), func, ref_)
}

///|
let d_glAlphaFuncx : Dispatch = Dispatch::new("glAlphaFuncx")

///|
extern "c" fn epoxy_glAlphaFuncx(fp : CPtr, func : UInt, ref_ : Int) -> Unit = "epoxy_glAlphaFuncx"

///|
pub fn gl_alpha_funcx(func : UInt, ref_ : Int) -> Unit {
  epoxy_glAlphaFuncx(d_glAlphaFuncx.get(), func, ref_)
}

///|
let d_glAlphaFuncxOES : Dispatch = Dispatch::new("glAlphaFuncxOES")

///|
extern "c" fn epoxy_glAlphaFuncxOES(fp : CPtr, func : UInt, ref_ : Int) -> Unit = "epoxy_glAlphaFuncxOES"

///|
pub fn gl_alpha_funcx_oes(func : UInt, ref_ : Int) -> Unit {
  epoxy_glAlphaFuncxOES(d_glAlphaFuncxOES.get(), func, ref_)
}

///|
let d_glAlphaToCoverageDitherControlNV : Dispatch = Dispatch::new(
  "glAlphaToCoverageDitherControlNV",
)

///|
extern "c" fn epoxy_glAlphaToCoverageDitherControlNV(
  fp : CPtr,
  mode : UInt,
) -> Unit = "epoxy_glAlphaToCoverageDitherControlNV"

///|
pub fn gl_alpha_to_coverage_dither_control_nv(mode : UInt) -> Unit {
  epoxy_glAlphaToCoverageDitherControlNV(
    d_glAlphaToCoverageDitherControlNV.get(),
    mode,
  )
}

///|
let d_glApplyFramebufferAttachmentCMAAINTEL : Dispatch = Dispatch::new(
  "glApplyFramebufferAttachmentCMAAINTEL",
)

///|
extern "c" fn epoxy_glApplyFramebufferAttachmentCMAAINTEL(fp : CPtr) -> Unit = "epoxy_glApplyFramebufferAttachmentCMAAINTEL"

///|
pub fn gl_apply_framebuffer_attachment_cmaaintel() -> Unit {
  epoxy_glApplyFramebufferAttachmentCMAAINTEL(
    d_glApplyFramebufferAttachmentCMAAINTEL.get(),
  )
}

///|
let d_glApplyTextureEXT : Dispatch = Dispatch::new("glApplyTextureEXT")

///|
extern "c" fn epoxy_glApplyTextureEXT(fp : CPtr, mode : UInt) -> Unit = "epoxy_glApplyTextureEXT"

///|
pub fn gl_apply_texture_ext(mode : UInt) -> Unit {
  epoxy_glApplyTextureEXT(d_glApplyTextureEXT.get(), mode)
}

///|
let d_glAcquireKeyedMutexWin32EXT : Dispatch = Dispatch::new(
  "glAcquireKeyedMutexWin32EXT",
)

///|
extern "c" fn epoxy_glAcquireKeyedMutexWin32EXT(
  fp : CPtr,
  memory : UInt,
  key : UInt64,
  timeout : UInt,
) -> Bool = "epoxy_glAcquireKeyedMutexWin32EXT"

///|
pub fn gl_acquire_keyed_mutex_win32_ext(
  memory : UInt,
  key : UInt64,
  timeout : UInt,
) -> Bool {
  epoxy_glAcquireKeyedMutexWin32EXT(
    d_glAcquireKeyedMutexWin32EXT.get(),
    memory,
    key,
    timeout,
  )
}

///|
let d_glAreProgramsResidentNV : Dispatch = Dispatch::new(
  "glAreProgramsResidentNV",
)

///|
#borrow(programs, residences)
extern "c" fn epoxy_glAreProgramsResidentNV(
  fp : CPtr,
  n : Int,
  programs : FixedArray[UInt],
  residences : Bytes,
) -> Bool = "epoxy_glAreProgramsResidentNV"

///|
pub fn gl_are_programs_resident_nv(
  n : Int,
  programs : FixedArray[UInt],
  residences : Bytes,
) -> Bool {
  epoxy_glAreProgramsResidentNV(
    d_glAreProgramsResidentNV.get(),
    n,
    programs,
    residences,
  )
}

///|
let d_glAreTexturesResident : Dispatch = Dispatch::new("glAreTexturesResident")

///|
#borrow(textures, residences)
extern "c" fn epoxy_glAreTexturesResident(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
  residences : Bytes,
) -> Bool = "epoxy_glAreTexturesResident"

///|
pub fn gl_are_textures_resident(
  n : Int,
  textures : FixedArray[UInt],
  residences : Bytes,
) -> Bool {
  epoxy_glAreTexturesResident(
    d_glAreTexturesResident.get(),
    n,
    textures,
    residences,
  )
}

///|
let d_glAreTexturesResidentEXT : Dispatch = Dispatch::new(
  "glAreTexturesResidentEXT",
)

///|
#borrow(textures, residences)
extern "c" fn epoxy_glAreTexturesResidentEXT(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
  residences : Bytes,
) -> Bool = "epoxy_glAreTexturesResidentEXT"

///|
pub fn gl_are_textures_resident_ext(
  n : Int,
  textures : FixedArray[UInt],
  residences : Bytes,
) -> Bool {
  epoxy_glAreTexturesResidentEXT(
    d_glAreTexturesResidentEXT.get(),
    n,
    textures,
    residences,
  )
}

///|
let d_glArrayElement : Dispatch = Dispatch::with_aliases("glArrayElement", [
  "glArrayElementEXT",
])

///|
extern "c" fn epoxy_glArrayElement(fp : CPtr, i : Int) -> Unit = "epoxy_glArrayElement"

///|
pub fn gl_array_element(i : Int) -> Unit {
  epoxy_glArrayElement(d_glArrayElement.get(), i)
}

///|
let d_glArrayElementEXT : Dispatch = Dispatch::with_aliases(
  "glArrayElementEXT",
  ["glArrayElement"],
)

///|
extern "c" fn epoxy_glArrayElementEXT(fp : CPtr, i : Int) -> Unit = "epoxy_glArrayElementEXT"

///|
pub fn gl_array_element_ext(i : Int) -> Unit {
  epoxy_glArrayElementEXT(d_glArrayElementEXT.get(), i)
}

///|
let d_glArrayObjectATI : Dispatch = Dispatch::new("glArrayObjectATI")

///|
extern "c" fn epoxy_glArrayObjectATI(
  fp : CPtr,
  array : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  buffer : UInt,
  offset : UInt,
) -> Unit = "epoxy_glArrayObjectATI"

///|
pub fn gl_array_object_ati(
  array : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  buffer : UInt,
  offset : UInt,
) -> Unit {
  epoxy_glArrayObjectATI(
    d_glArrayObjectATI.get(),
    array,
    size,
    type_,
    stride,
    buffer,
    offset,
  )
}

///|
let d_glAsyncCopyBufferSubDataNVX : Dispatch = Dispatch::new(
  "glAsyncCopyBufferSubDataNVX",
)

///|
#borrow(waitSemaphoreArray, fenceValueArray, signalSemaphoreArray, signalValueArray)
extern "c" fn epoxy_glAsyncCopyBufferSubDataNVX(
  fp : CPtr,
  waitSemaphoreCount : Int,
  waitSemaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
  readGpu : UInt,
  writeGpuMask : UInt,
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
  signalSemaphoreCount : Int,
  signalSemaphoreArray : FixedArray[UInt],
  signalValueArray : FixedArray[UInt64],
) -> UInt = "epoxy_glAsyncCopyBufferSubDataNVX"

///|
pub fn gl_async_copy_buffer_sub_data_nvx(
  waitSemaphoreCount : Int,
  waitSemaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
  readGpu : UInt,
  writeGpuMask : UInt,
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
  signalSemaphoreCount : Int,
  signalSemaphoreArray : FixedArray[UInt],
  signalValueArray : FixedArray[UInt64],
) -> UInt {
  epoxy_glAsyncCopyBufferSubDataNVX(
    d_glAsyncCopyBufferSubDataNVX.get(),
    waitSemaphoreCount,
    waitSemaphoreArray,
    fenceValueArray,
    readGpu,
    writeGpuMask,
    readBuffer,
    writeBuffer,
    readOffset,
    writeOffset,
    size,
    signalSemaphoreCount,
    signalSemaphoreArray,
    signalValueArray,
  )
}

///|
let d_glAsyncCopyImageSubDataNVX : Dispatch = Dispatch::new(
  "glAsyncCopyImageSubDataNVX",
)

///|
#borrow(waitSemaphoreArray, waitValueArray, signalSemaphoreArray, signalValueArray)
extern "c" fn epoxy_glAsyncCopyImageSubDataNVX(
  fp : CPtr,
  waitSemaphoreCount : Int,
  waitSemaphoreArray : FixedArray[UInt],
  waitValueArray : FixedArray[UInt64],
  srcGpu : UInt,
  dstGpuMask : UInt,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
  signalSemaphoreCount : Int,
  signalSemaphoreArray : FixedArray[UInt],
  signalValueArray : FixedArray[UInt64],
) -> UInt = "epoxy_glAsyncCopyImageSubDataNVX"

///|
pub fn gl_async_copy_image_sub_data_nvx(
  waitSemaphoreCount : Int,
  waitSemaphoreArray : FixedArray[UInt],
  waitValueArray : FixedArray[UInt64],
  srcGpu : UInt,
  dstGpuMask : UInt,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
  signalSemaphoreCount : Int,
  signalSemaphoreArray : FixedArray[UInt],
  signalValueArray : FixedArray[UInt64],
) -> UInt {
  epoxy_glAsyncCopyImageSubDataNVX(
    d_glAsyncCopyImageSubDataNVX.get(),
    waitSemaphoreCount,
    waitSemaphoreArray,
    waitValueArray,
    srcGpu,
    dstGpuMask,
    srcName,
    srcTarget,
    srcLevel,
    srcX,
    srcY,
    srcZ,
    dstName,
    dstTarget,
    dstLevel,
    dstX,
    dstY,
    dstZ,
    srcWidth,
    srcHeight,
    srcDepth,
    signalSemaphoreCount,
    signalSemaphoreArray,
    signalValueArray,
  )
}

///|
let d_glAsyncMarkerSGIX : Dispatch = Dispatch::new("glAsyncMarkerSGIX")

///|
extern "c" fn epoxy_glAsyncMarkerSGIX(fp : CPtr, marker : UInt) -> Unit = "epoxy_glAsyncMarkerSGIX"

///|
pub fn gl_async_marker_sgix(marker : UInt) -> Unit {
  epoxy_glAsyncMarkerSGIX(d_glAsyncMarkerSGIX.get(), marker)
}

///|
let d_glAttachShader : Dispatch = Dispatch::with_aliases("glAttachShader", [
  "glAttachObjectARB",
])

///|
extern "c" fn epoxy_glAttachShader(
  fp : CPtr,
  program : UInt,
  shader : UInt,
) -> Unit = "epoxy_glAttachShader"

///|
pub fn gl_attach_shader(program : UInt, shader : UInt) -> Unit {
  epoxy_glAttachShader(d_glAttachShader.get(), program, shader)
}

///|
let d_glBegin : Dispatch = Dispatch::new("glBegin")

///|
extern "c" fn epoxy_glBegin(fp : CPtr, mode : UInt) -> Unit = "epoxy_glBegin"

///|
pub fn gl_begin(mode : UInt) -> Unit {
  epoxy_glBegin(d_glBegin.get(), mode)
}

///|
let d_glBeginConditionalRender : Dispatch = Dispatch::with_aliases(
  "glBeginConditionalRender",
  ["glBeginConditionalRenderNV"],
)

///|
extern "c" fn epoxy_glBeginConditionalRender(
  fp : CPtr,
  id : UInt,
  mode : UInt,
) -> Unit = "epoxy_glBeginConditionalRender"

///|
pub fn gl_begin_conditional_render(id : UInt, mode : UInt) -> Unit {
  epoxy_glBeginConditionalRender(d_glBeginConditionalRender.get(), id, mode)
}

///|
let d_glBeginConditionalRenderNV : Dispatch = Dispatch::with_aliases(
  "glBeginConditionalRenderNV",
  ["glBeginConditionalRender"],
)

///|
extern "c" fn epoxy_glBeginConditionalRenderNV(
  fp : CPtr,
  id : UInt,
  mode : UInt,
) -> Unit = "epoxy_glBeginConditionalRenderNV"

///|
pub fn gl_begin_conditional_render_nv(id : UInt, mode : UInt) -> Unit {
  epoxy_glBeginConditionalRenderNV(d_glBeginConditionalRenderNV.get(), id, mode)
}

///|
let d_glBeginConditionalRenderNVX : Dispatch = Dispatch::new(
  "glBeginConditionalRenderNVX",
)

///|
extern "c" fn epoxy_glBeginConditionalRenderNVX(fp : CPtr, id : UInt) -> Unit = "epoxy_glBeginConditionalRenderNVX"

///|
pub fn gl_begin_conditional_render_nvx(id : UInt) -> Unit {
  epoxy_glBeginConditionalRenderNVX(d_glBeginConditionalRenderNVX.get(), id)
}

///|
let d_glBeginFragmentShaderATI : Dispatch = Dispatch::new(
  "glBeginFragmentShaderATI",
)

///|
extern "c" fn epoxy_glBeginFragmentShaderATI(fp : CPtr) -> Unit = "epoxy_glBeginFragmentShaderATI"

///|
pub fn gl_begin_fragment_shader_ati() -> Unit {
  epoxy_glBeginFragmentShaderATI(d_glBeginFragmentShaderATI.get())
}

///|
let d_glBeginOcclusionQueryNV : Dispatch = Dispatch::new(
  "glBeginOcclusionQueryNV",
)

///|
extern "c" fn epoxy_glBeginOcclusionQueryNV(fp : CPtr, id : UInt) -> Unit = "epoxy_glBeginOcclusionQueryNV"

///|
pub fn gl_begin_occlusion_query_nv(id : UInt) -> Unit {
  epoxy_glBeginOcclusionQueryNV(d_glBeginOcclusionQueryNV.get(), id)
}

///|
let d_glBeginPerfMonitorAMD : Dispatch = Dispatch::new("glBeginPerfMonitorAMD")

///|
extern "c" fn epoxy_glBeginPerfMonitorAMD(fp : CPtr, monitor : UInt) -> Unit = "epoxy_glBeginPerfMonitorAMD"

///|
pub fn gl_begin_perf_monitor_amd(monitor : UInt) -> Unit {
  epoxy_glBeginPerfMonitorAMD(d_glBeginPerfMonitorAMD.get(), monitor)
}

///|
let d_glBeginPerfQueryINTEL : Dispatch = Dispatch::new("glBeginPerfQueryINTEL")

///|
extern "c" fn epoxy_glBeginPerfQueryINTEL(
  fp : CPtr,
  queryHandle : UInt,
) -> Unit = "epoxy_glBeginPerfQueryINTEL"

///|
pub fn gl_begin_perf_query_intel(queryHandle : UInt) -> Unit {
  epoxy_glBeginPerfQueryINTEL(d_glBeginPerfQueryINTEL.get(), queryHandle)
}

///|
let d_glBeginQuery : Dispatch = Dispatch::with_aliases("glBeginQuery", [
  "glBeginQueryARB",
])

///|
extern "c" fn epoxy_glBeginQuery(fp : CPtr, target : UInt, id : UInt) -> Unit = "epoxy_glBeginQuery"

///|
pub fn gl_begin_query(target : UInt, id : UInt) -> Unit {
  epoxy_glBeginQuery(d_glBeginQuery.get(), target, id)
}

///|
let d_glBeginQueryARB : Dispatch = Dispatch::with_aliases("glBeginQueryARB", [
  "glBeginQuery",
])

///|
extern "c" fn epoxy_glBeginQueryARB(
  fp : CPtr,
  target : UInt,
  id : UInt,
) -> Unit = "epoxy_glBeginQueryARB"

///|
pub fn gl_begin_query_arb(target : UInt, id : UInt) -> Unit {
  epoxy_glBeginQueryARB(d_glBeginQueryARB.get(), target, id)
}

///|
let d_glBeginQueryEXT : Dispatch = Dispatch::new("glBeginQueryEXT")

///|
extern "c" fn epoxy_glBeginQueryEXT(
  fp : CPtr,
  target : UInt,
  id : UInt,
) -> Unit = "epoxy_glBeginQueryEXT"

///|
pub fn gl_begin_query_ext(target : UInt, id : UInt) -> Unit {
  epoxy_glBeginQueryEXT(d_glBeginQueryEXT.get(), target, id)
}

///|
let d_glBeginQueryIndexed : Dispatch = Dispatch::new("glBeginQueryIndexed")

///|
extern "c" fn epoxy_glBeginQueryIndexed(
  fp : CPtr,
  target : UInt,
  index : UInt,
  id : UInt,
) -> Unit = "epoxy_glBeginQueryIndexed"

///|
pub fn gl_begin_query_indexed(target : UInt, index : UInt, id : UInt) -> Unit {
  epoxy_glBeginQueryIndexed(d_glBeginQueryIndexed.get(), target, index, id)
}

///|
let d_glBeginTransformFeedback : Dispatch = Dispatch::with_aliases(
  "glBeginTransformFeedback",
  ["glBeginTransformFeedbackEXT", "glBeginTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glBeginTransformFeedback(
  fp : CPtr,
  primitiveMode : UInt,
) -> Unit = "epoxy_glBeginTransformFeedback"

///|
pub fn gl_begin_transform_feedback(primitiveMode : UInt) -> Unit {
  epoxy_glBeginTransformFeedback(
    d_glBeginTransformFeedback.get(),
    primitiveMode,
  )
}

///|
let d_glBeginTransformFeedbackEXT : Dispatch = Dispatch::with_aliases(
  "glBeginTransformFeedbackEXT",
  ["glBeginTransformFeedback", "glBeginTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glBeginTransformFeedbackEXT(
  fp : CPtr,
  primitiveMode : UInt,
) -> Unit = "epoxy_glBeginTransformFeedbackEXT"

///|
pub fn gl_begin_transform_feedback_ext(primitiveMode : UInt) -> Unit {
  epoxy_glBeginTransformFeedbackEXT(
    d_glBeginTransformFeedbackEXT.get(),
    primitiveMode,
  )
}

///|
let d_glBeginTransformFeedbackNV : Dispatch = Dispatch::with_aliases(
  "glBeginTransformFeedbackNV",
  ["glBeginTransformFeedback", "glBeginTransformFeedbackEXT"],
)

///|
extern "c" fn epoxy_glBeginTransformFeedbackNV(
  fp : CPtr,
  primitiveMode : UInt,
) -> Unit = "epoxy_glBeginTransformFeedbackNV"

///|
pub fn gl_begin_transform_feedback_nv(primitiveMode : UInt) -> Unit {
  epoxy_glBeginTransformFeedbackNV(
    d_glBeginTransformFeedbackNV.get(),
    primitiveMode,
  )
}

///|
let d_glBeginVertexShaderEXT : Dispatch = Dispatch::new(
  "glBeginVertexShaderEXT",
)

///|
extern "c" fn epoxy_glBeginVertexShaderEXT(fp : CPtr) -> Unit = "epoxy_glBeginVertexShaderEXT"

///|
pub fn gl_begin_vertex_shader_ext() -> Unit {
  epoxy_glBeginVertexShaderEXT(d_glBeginVertexShaderEXT.get())
}

///|
let d_glBeginVideoCaptureNV : Dispatch = Dispatch::new("glBeginVideoCaptureNV")

///|
extern "c" fn epoxy_glBeginVideoCaptureNV(
  fp : CPtr,
  video_capture_slot : UInt,
) -> Unit = "epoxy_glBeginVideoCaptureNV"

///|
pub fn gl_begin_video_capture_nv(video_capture_slot : UInt) -> Unit {
  epoxy_glBeginVideoCaptureNV(d_glBeginVideoCaptureNV.get(), video_capture_slot)
}

///|
let d_glBindAttribLocation : Dispatch = Dispatch::with_aliases(
  "glBindAttribLocation",
  ["glBindAttribLocationARB"],
)

///|
#borrow(name)
extern "c" fn epoxy_glBindAttribLocation(
  fp : CPtr,
  program : UInt,
  index : UInt,
  name : Bytes,
) -> Unit = "epoxy_glBindAttribLocation"

///|
pub fn gl_bind_attrib_location(
  program : UInt,
  index : UInt,
  name : Bytes,
) -> Unit {
  epoxy_glBindAttribLocation(d_glBindAttribLocation.get(), program, index, name)
}

///|
let d_glBindBuffer : Dispatch = Dispatch::with_aliases("glBindBuffer", [
  "glBindBufferARB",
])

///|
extern "c" fn epoxy_glBindBuffer(
  fp : CPtr,
  target : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glBindBuffer"

///|
pub fn gl_bind_buffer(target : UInt, buffer : UInt) -> Unit {
  epoxy_glBindBuffer(d_glBindBuffer.get(), target, buffer)
}

///|
let d_glBindBufferARB : Dispatch = Dispatch::with_aliases("glBindBufferARB", [
  "glBindBuffer",
])

///|
extern "c" fn epoxy_glBindBufferARB(
  fp : CPtr,
  target : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glBindBufferARB"

///|
pub fn gl_bind_buffer_arb(target : UInt, buffer : UInt) -> Unit {
  epoxy_glBindBufferARB(d_glBindBufferARB.get(), target, buffer)
}

///|
let d_glBindBufferBase : Dispatch = Dispatch::with_aliases("glBindBufferBase", [
  "glBindBufferBaseEXT", "glBindBufferBaseNV",
])

///|
extern "c" fn epoxy_glBindBufferBase(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glBindBufferBase"

///|
pub fn gl_bind_buffer_base(target : UInt, index : UInt, buffer : UInt) -> Unit {
  epoxy_glBindBufferBase(d_glBindBufferBase.get(), target, index, buffer)
}

///|
let d_glBindBufferBaseEXT : Dispatch = Dispatch::with_aliases(
  "glBindBufferBaseEXT",
  ["glBindBufferBase", "glBindBufferBaseNV"],
)

///|
extern "c" fn epoxy_glBindBufferBaseEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glBindBufferBaseEXT"

///|
pub fn gl_bind_buffer_base_ext(
  target : UInt,
  index : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glBindBufferBaseEXT(d_glBindBufferBaseEXT.get(), target, index, buffer)
}

///|
let d_glBindBufferBaseNV : Dispatch = Dispatch::with_aliases(
  "glBindBufferBaseNV",
  ["glBindBufferBase", "glBindBufferBaseEXT"],
)

///|
extern "c" fn epoxy_glBindBufferBaseNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glBindBufferBaseNV"

///|
pub fn gl_bind_buffer_base_nv(
  target : UInt,
  index : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glBindBufferBaseNV(d_glBindBufferBaseNV.get(), target, index, buffer)
}

///|
let d_glBindBufferOffsetEXT : Dispatch = Dispatch::with_aliases(
  "glBindBufferOffsetEXT",
  ["glBindBufferOffsetNV"],
)

///|
extern "c" fn epoxy_glBindBufferOffsetEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
) -> Unit = "epoxy_glBindBufferOffsetEXT"

///|
pub fn gl_bind_buffer_offset_ext(
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
) -> Unit {
  epoxy_glBindBufferOffsetEXT(
    d_glBindBufferOffsetEXT.get(),
    target,
    index,
    buffer,
    offset,
  )
}

///|
let d_glBindBufferOffsetNV : Dispatch = Dispatch::with_aliases(
  "glBindBufferOffsetNV",
  ["glBindBufferOffsetEXT"],
)

///|
extern "c" fn epoxy_glBindBufferOffsetNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
) -> Unit = "epoxy_glBindBufferOffsetNV"

///|
pub fn gl_bind_buffer_offset_nv(
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
) -> Unit {
  epoxy_glBindBufferOffsetNV(
    d_glBindBufferOffsetNV.get(),
    target,
    index,
    buffer,
    offset,
  )
}

///|
let d_glBindBufferRange : Dispatch = Dispatch::with_aliases(
  "glBindBufferRange",
  ["glBindBufferRangeEXT", "glBindBufferRangeNV"],
)

///|
extern "c" fn epoxy_glBindBufferRange(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glBindBufferRange"

///|
pub fn gl_bind_buffer_range(
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glBindBufferRange(
    d_glBindBufferRange.get(),
    target,
    index,
    buffer,
    offset,
    size,
  )
}

///|
let d_glBindBufferRangeEXT : Dispatch = Dispatch::with_aliases(
  "glBindBufferRangeEXT",
  ["glBindBufferRange", "glBindBufferRangeNV"],
)

///|
extern "c" fn epoxy_glBindBufferRangeEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glBindBufferRangeEXT"

///|
pub fn gl_bind_buffer_range_ext(
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glBindBufferRangeEXT(
    d_glBindBufferRangeEXT.get(),
    target,
    index,
    buffer,
    offset,
    size,
  )
}

///|
let d_glBindBufferRangeNV : Dispatch = Dispatch::with_aliases(
  "glBindBufferRangeNV",
  ["glBindBufferRange", "glBindBufferRangeEXT"],
)

///|
extern "c" fn epoxy_glBindBufferRangeNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glBindBufferRangeNV"

///|
pub fn gl_bind_buffer_range_nv(
  target : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glBindBufferRangeNV(
    d_glBindBufferRangeNV.get(),
    target,
    index,
    buffer,
    offset,
    size,
  )
}

///|
let d_glBindBuffersBase : Dispatch = Dispatch::new("glBindBuffersBase")

///|
#borrow(buffers)
extern "c" fn epoxy_glBindBuffersBase(
  fp : CPtr,
  target : UInt,
  first : UInt,
  count : Int,
  buffers : FixedArray[UInt],
) -> Unit = "epoxy_glBindBuffersBase"

///|
pub fn gl_bind_buffers_base(
  target : UInt,
  first : UInt,
  count : Int,
  buffers : FixedArray[UInt],
) -> Unit {
  epoxy_glBindBuffersBase(
    d_glBindBuffersBase.get(),
    target,
    first,
    count,
    buffers,
  )
}

///|
let d_glBindFragDataLocation : Dispatch = Dispatch::with_aliases(
  "glBindFragDataLocation",
  ["glBindFragDataLocationEXT"],
)

///|
#borrow(name)
extern "c" fn epoxy_glBindFragDataLocation(
  fp : CPtr,
  program : UInt,
  color : UInt,
  name : Bytes,
) -> Unit = "epoxy_glBindFragDataLocation"

///|
pub fn gl_bind_frag_data_location(
  program : UInt,
  color : UInt,
  name : Bytes,
) -> Unit {
  epoxy_glBindFragDataLocation(
    d_glBindFragDataLocation.get(),
    program,
    color,
    name,
  )
}

///|
let d_glBindFragDataLocationEXT : Dispatch = Dispatch::with_aliases(
  "glBindFragDataLocationEXT",
  ["glBindFragDataLocation"],
)

///|
#borrow(name)
extern "c" fn epoxy_glBindFragDataLocationEXT(
  fp : CPtr,
  program : UInt,
  color : UInt,
  name : Bytes,
) -> Unit = "epoxy_glBindFragDataLocationEXT"

///|
pub fn gl_bind_frag_data_location_ext(
  program : UInt,
  color : UInt,
  name : Bytes,
) -> Unit {
  epoxy_glBindFragDataLocationEXT(
    d_glBindFragDataLocationEXT.get(),
    program,
    color,
    name,
  )
}

///|
let d_glBindFragDataLocationIndexed : Dispatch = Dispatch::with_aliases(
  "glBindFragDataLocationIndexed",
  ["glBindFragDataLocationIndexedEXT"],
)

///|
#borrow(name)
extern "c" fn epoxy_glBindFragDataLocationIndexed(
  fp : CPtr,
  program : UInt,
  colorNumber : UInt,
  index : UInt,
  name : Bytes,
) -> Unit = "epoxy_glBindFragDataLocationIndexed"

///|
pub fn gl_bind_frag_data_location_indexed(
  program : UInt,
  colorNumber : UInt,
  index : UInt,
  name : Bytes,
) -> Unit {
  epoxy_glBindFragDataLocationIndexed(
    d_glBindFragDataLocationIndexed.get(),
    program,
    colorNumber,
    index,
    name,
  )
}

///|
let d_glBindFragDataLocationIndexedEXT : Dispatch = Dispatch::with_aliases(
  "glBindFragDataLocationIndexedEXT",
  ["glBindFragDataLocationIndexed"],
)

///|
#borrow(name)
extern "c" fn epoxy_glBindFragDataLocationIndexedEXT(
  fp : CPtr,
  program : UInt,
  colorNumber : UInt,
  index : UInt,
  name : Bytes,
) -> Unit = "epoxy_glBindFragDataLocationIndexedEXT"

///|
pub fn gl_bind_frag_data_location_indexed_ext(
  program : UInt,
  colorNumber : UInt,
  index : UInt,
  name : Bytes,
) -> Unit {
  epoxy_glBindFragDataLocationIndexedEXT(
    d_glBindFragDataLocationIndexedEXT.get(),
    program,
    colorNumber,
    index,
    name,
  )
}

///|
let d_glBindFragmentShaderATI : Dispatch = Dispatch::new(
  "glBindFragmentShaderATI",
)

///|
extern "c" fn epoxy_glBindFragmentShaderATI(fp : CPtr, id : UInt) -> Unit = "epoxy_glBindFragmentShaderATI"

///|
pub fn gl_bind_fragment_shader_ati(id : UInt) -> Unit {
  epoxy_glBindFragmentShaderATI(d_glBindFragmentShaderATI.get(), id)
}

///|
let d_glBindFramebuffer : Dispatch = Dispatch::new("glBindFramebuffer")

///|
extern "c" fn epoxy_glBindFramebuffer(
  fp : CPtr,
  target : UInt,
  framebuffer : UInt,
) -> Unit = "epoxy_glBindFramebuffer"

///|
pub fn gl_bind_framebuffer(target : UInt, framebuffer : UInt) -> Unit {
  epoxy_glBindFramebuffer(d_glBindFramebuffer.get(), target, framebuffer)
}

///|
let d_glBindFramebufferEXT : Dispatch = Dispatch::new("glBindFramebufferEXT")

///|
extern "c" fn epoxy_glBindFramebufferEXT(
  fp : CPtr,
  target : UInt,
  framebuffer : UInt,
) -> Unit = "epoxy_glBindFramebufferEXT"

///|
pub fn gl_bind_framebuffer_ext(target : UInt, framebuffer : UInt) -> Unit {
  epoxy_glBindFramebufferEXT(d_glBindFramebufferEXT.get(), target, framebuffer)
}

///|
let d_glBindFramebufferOES : Dispatch = Dispatch::new("glBindFramebufferOES")

///|
extern "c" fn epoxy_glBindFramebufferOES(
  fp : CPtr,
  target : UInt,
  framebuffer : UInt,
) -> Unit = "epoxy_glBindFramebufferOES"

///|
pub fn gl_bind_framebuffer_oes(target : UInt, framebuffer : UInt) -> Unit {
  epoxy_glBindFramebufferOES(d_glBindFramebufferOES.get(), target, framebuffer)
}

///|
let d_glBindImageTexture : Dispatch = Dispatch::new("glBindImageTexture")

///|
extern "c" fn epoxy_glBindImageTexture(
  fp : CPtr,
  unit : UInt,
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  access : UInt,
  format : UInt,
) -> Unit = "epoxy_glBindImageTexture"

///|
pub fn gl_bind_image_texture(
  unit : UInt,
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  access : UInt,
  format : UInt,
) -> Unit {
  epoxy_glBindImageTexture(
    d_glBindImageTexture.get(),
    unit,
    texture,
    level,
    layered,
    layer,
    access,
    format,
  )
}

///|
let d_glBindImageTextureEXT : Dispatch = Dispatch::new("glBindImageTextureEXT")

///|
extern "c" fn epoxy_glBindImageTextureEXT(
  fp : CPtr,
  index : UInt,
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  access : UInt,
  format : Int,
) -> Unit = "epoxy_glBindImageTextureEXT"

///|
pub fn gl_bind_image_texture_ext(
  index : UInt,
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  access : UInt,
  format : Int,
) -> Unit {
  epoxy_glBindImageTextureEXT(
    d_glBindImageTextureEXT.get(),
    index,
    texture,
    level,
    layered,
    layer,
    access,
    format,
  )
}

///|
let d_glBindImageTextures : Dispatch = Dispatch::new("glBindImageTextures")

///|
#borrow(textures)
extern "c" fn epoxy_glBindImageTextures(
  fp : CPtr,
  first : UInt,
  count : Int,
  textures : FixedArray[UInt],
) -> Unit = "epoxy_glBindImageTextures"

///|
pub fn gl_bind_image_textures(
  first : UInt,
  count : Int,
  textures : FixedArray[UInt],
) -> Unit {
  epoxy_glBindImageTextures(d_glBindImageTextures.get(), first, count, textures)
}

///|
let d_glBindLightParameterEXT : Dispatch = Dispatch::new(
  "glBindLightParameterEXT",
)

///|
extern "c" fn epoxy_glBindLightParameterEXT(
  fp : CPtr,
  light : UInt,
  value : UInt,
) -> UInt = "epoxy_glBindLightParameterEXT"

///|
pub fn gl_bind_light_parameter_ext(light : UInt, value : UInt) -> UInt {
  epoxy_glBindLightParameterEXT(d_glBindLightParameterEXT.get(), light, value)
}

///|
let d_glBindMaterialParameterEXT : Dispatch = Dispatch::new(
  "glBindMaterialParameterEXT",
)

///|
extern "c" fn epoxy_glBindMaterialParameterEXT(
  fp : CPtr,
  face : UInt,
  value : UInt,
) -> UInt = "epoxy_glBindMaterialParameterEXT"

///|
pub fn gl_bind_material_parameter_ext(face : UInt, value : UInt) -> UInt {
  epoxy_glBindMaterialParameterEXT(
    d_glBindMaterialParameterEXT.get(),
    face,
    value,
  )
}

///|
let d_glBindMultiTextureEXT : Dispatch = Dispatch::new("glBindMultiTextureEXT")

///|
extern "c" fn epoxy_glBindMultiTextureEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  texture : UInt,
) -> Unit = "epoxy_glBindMultiTextureEXT"

///|
pub fn gl_bind_multi_texture_ext(
  texunit : UInt,
  target : UInt,
  texture : UInt,
) -> Unit {
  epoxy_glBindMultiTextureEXT(
    d_glBindMultiTextureEXT.get(),
    texunit,
    target,
    texture,
  )
}

///|
let d_glBindParameterEXT : Dispatch = Dispatch::new("glBindParameterEXT")

///|
extern "c" fn epoxy_glBindParameterEXT(fp : CPtr, value : UInt) -> UInt = "epoxy_glBindParameterEXT"

///|
pub fn gl_bind_parameter_ext(value : UInt) -> UInt {
  epoxy_glBindParameterEXT(d_glBindParameterEXT.get(), value)
}

///|
let d_glBindProgramARB : Dispatch = Dispatch::with_aliases("glBindProgramARB", [
  "glBindProgramNV",
])

///|
extern "c" fn epoxy_glBindProgramARB(
  fp : CPtr,
  target : UInt,
  program : UInt,
) -> Unit = "epoxy_glBindProgramARB"

///|
pub fn gl_bind_program_arb(target : UInt, program : UInt) -> Unit {
  epoxy_glBindProgramARB(d_glBindProgramARB.get(), target, program)
}

///|
let d_glBindProgramNV : Dispatch = Dispatch::with_aliases("glBindProgramNV", [
  "glBindProgramARB",
])

///|
extern "c" fn epoxy_glBindProgramNV(
  fp : CPtr,
  target : UInt,
  id : UInt,
) -> Unit = "epoxy_glBindProgramNV"

///|
pub fn gl_bind_program_nv(target : UInt, id : UInt) -> Unit {
  epoxy_glBindProgramNV(d_glBindProgramNV.get(), target, id)
}

///|
let d_glBindProgramPipeline : Dispatch = Dispatch::new("glBindProgramPipeline")

///|
extern "c" fn epoxy_glBindProgramPipeline(fp : CPtr, pipeline : UInt) -> Unit = "epoxy_glBindProgramPipeline"

///|
pub fn gl_bind_program_pipeline(pipeline : UInt) -> Unit {
  epoxy_glBindProgramPipeline(d_glBindProgramPipeline.get(), pipeline)
}

///|
let d_glBindProgramPipelineEXT : Dispatch = Dispatch::new(
  "glBindProgramPipelineEXT",
)

///|
extern "c" fn epoxy_glBindProgramPipelineEXT(
  fp : CPtr,
  pipeline : UInt,
) -> Unit = "epoxy_glBindProgramPipelineEXT"

///|
pub fn gl_bind_program_pipeline_ext(pipeline : UInt) -> Unit {
  epoxy_glBindProgramPipelineEXT(d_glBindProgramPipelineEXT.get(), pipeline)
}

///|
let d_glBindRenderbuffer : Dispatch = Dispatch::new("glBindRenderbuffer")

///|
extern "c" fn epoxy_glBindRenderbuffer(
  fp : CPtr,
  target : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glBindRenderbuffer"

///|
pub fn gl_bind_renderbuffer(target : UInt, renderbuffer : UInt) -> Unit {
  epoxy_glBindRenderbuffer(d_glBindRenderbuffer.get(), target, renderbuffer)
}

///|
let d_glBindRenderbufferEXT : Dispatch = Dispatch::new("glBindRenderbufferEXT")

///|
extern "c" fn epoxy_glBindRenderbufferEXT(
  fp : CPtr,
  target : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glBindRenderbufferEXT"

///|
pub fn gl_bind_renderbuffer_ext(target : UInt, renderbuffer : UInt) -> Unit {
  epoxy_glBindRenderbufferEXT(
    d_glBindRenderbufferEXT.get(),
    target,
    renderbuffer,
  )
}

///|
let d_glBindRenderbufferOES : Dispatch = Dispatch::new("glBindRenderbufferOES")

///|
extern "c" fn epoxy_glBindRenderbufferOES(
  fp : CPtr,
  target : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glBindRenderbufferOES"

///|
pub fn gl_bind_renderbuffer_oes(target : UInt, renderbuffer : UInt) -> Unit {
  epoxy_glBindRenderbufferOES(
    d_glBindRenderbufferOES.get(),
    target,
    renderbuffer,
  )
}

///|
let d_glBindSampler : Dispatch = Dispatch::new("glBindSampler")

///|
extern "c" fn epoxy_glBindSampler(
  fp : CPtr,
  unit : UInt,
  sampler : UInt,
) -> Unit = "epoxy_glBindSampler"

///|
pub fn gl_bind_sampler(unit : UInt, sampler : UInt) -> Unit {
  epoxy_glBindSampler(d_glBindSampler.get(), unit, sampler)
}

///|
let d_glBindSamplers : Dispatch = Dispatch::new("glBindSamplers")

///|
#borrow(samplers)
extern "c" fn epoxy_glBindSamplers(
  fp : CPtr,
  first : UInt,
  count : Int,
  samplers : FixedArray[UInt],
) -> Unit = "epoxy_glBindSamplers"

///|
pub fn gl_bind_samplers(
  first : UInt,
  count : Int,
  samplers : FixedArray[UInt],
) -> Unit {
  epoxy_glBindSamplers(d_glBindSamplers.get(), first, count, samplers)
}

///|
let d_glBindShadingRateImageNV : Dispatch = Dispatch::new(
  "glBindShadingRateImageNV",
)

///|
extern "c" fn epoxy_glBindShadingRateImageNV(fp : CPtr, texture : UInt) -> Unit = "epoxy_glBindShadingRateImageNV"

///|
pub fn gl_bind_shading_rate_image_nv(texture : UInt) -> Unit {
  epoxy_glBindShadingRateImageNV(d_glBindShadingRateImageNV.get(), texture)
}

///|
let d_glBindTexGenParameterEXT : Dispatch = Dispatch::new(
  "glBindTexGenParameterEXT",
)

///|
extern "c" fn epoxy_glBindTexGenParameterEXT(
  fp : CPtr,
  unit : UInt,
  coord : UInt,
  value : UInt,
) -> UInt = "epoxy_glBindTexGenParameterEXT"

///|
pub fn gl_bind_tex_gen_parameter_ext(
  unit : UInt,
  coord : UInt,
  value : UInt,
) -> UInt {
  epoxy_glBindTexGenParameterEXT(
    d_glBindTexGenParameterEXT.get(),
    unit,
    coord,
    value,
  )
}

///|
let d_glBindTexture : Dispatch = Dispatch::with_aliases("glBindTexture", [
  "glBindTextureEXT",
])

///|
extern "c" fn epoxy_glBindTexture(
  fp : CPtr,
  target : UInt,
  texture : UInt,
) -> Unit = "epoxy_glBindTexture"

///|
pub fn gl_bind_texture(target : UInt, texture : UInt) -> Unit {
  epoxy_glBindTexture(d_glBindTexture.get(), target, texture)
}

///|
let d_glBindTextureEXT : Dispatch = Dispatch::with_aliases("glBindTextureEXT", [
  "glBindTexture",
])

///|
extern "c" fn epoxy_glBindTextureEXT(
  fp : CPtr,
  target : UInt,
  texture : UInt,
) -> Unit = "epoxy_glBindTextureEXT"

///|
pub fn gl_bind_texture_ext(target : UInt, texture : UInt) -> Unit {
  epoxy_glBindTextureEXT(d_glBindTextureEXT.get(), target, texture)
}

///|
let d_glBindTextureUnit : Dispatch = Dispatch::new("glBindTextureUnit")

///|
extern "c" fn epoxy_glBindTextureUnit(
  fp : CPtr,
  unit : UInt,
  texture : UInt,
) -> Unit = "epoxy_glBindTextureUnit"

///|
pub fn gl_bind_texture_unit(unit : UInt, texture : UInt) -> Unit {
  epoxy_glBindTextureUnit(d_glBindTextureUnit.get(), unit, texture)
}

///|
let d_glBindTextureUnitParameterEXT : Dispatch = Dispatch::new(
  "glBindTextureUnitParameterEXT",
)

///|
extern "c" fn epoxy_glBindTextureUnitParameterEXT(
  fp : CPtr,
  unit : UInt,
  value : UInt,
) -> UInt = "epoxy_glBindTextureUnitParameterEXT"

///|
pub fn gl_bind_texture_unit_parameter_ext(unit : UInt, value : UInt) -> UInt {
  epoxy_glBindTextureUnitParameterEXT(
    d_glBindTextureUnitParameterEXT.get(),
    unit,
    value,
  )
}

///|
let d_glBindTextures : Dispatch = Dispatch::new("glBindTextures")

///|
#borrow(textures)
extern "c" fn epoxy_glBindTextures(
  fp : CPtr,
  first : UInt,
  count : Int,
  textures : FixedArray[UInt],
) -> Unit = "epoxy_glBindTextures"

///|
pub fn gl_bind_textures(
  first : UInt,
  count : Int,
  textures : FixedArray[UInt],
) -> Unit {
  epoxy_glBindTextures(d_glBindTextures.get(), first, count, textures)
}

///|
let d_glBindTransformFeedback : Dispatch = Dispatch::new(
  "glBindTransformFeedback",
)

///|
extern "c" fn epoxy_glBindTransformFeedback(
  fp : CPtr,
  target : UInt,
  id : UInt,
) -> Unit = "epoxy_glBindTransformFeedback"

///|
pub fn gl_bind_transform_feedback(target : UInt, id : UInt) -> Unit {
  epoxy_glBindTransformFeedback(d_glBindTransformFeedback.get(), target, id)
}

///|
let d_glBindTransformFeedbackNV : Dispatch = Dispatch::new(
  "glBindTransformFeedbackNV",
)

///|
extern "c" fn epoxy_glBindTransformFeedbackNV(
  fp : CPtr,
  target : UInt,
  id : UInt,
) -> Unit = "epoxy_glBindTransformFeedbackNV"

///|
pub fn gl_bind_transform_feedback_nv(target : UInt, id : UInt) -> Unit {
  epoxy_glBindTransformFeedbackNV(d_glBindTransformFeedbackNV.get(), target, id)
}

///|
let d_glBindVertexArray : Dispatch = Dispatch::with_aliases(
  "glBindVertexArray",
  ["glBindVertexArrayOES"],
)

///|
extern "c" fn epoxy_glBindVertexArray(fp : CPtr, array : UInt) -> Unit = "epoxy_glBindVertexArray"

///|
pub fn gl_bind_vertex_array(array : UInt) -> Unit {
  epoxy_glBindVertexArray(d_glBindVertexArray.get(), array)
}

///|
let d_glBindVertexArrayAPPLE : Dispatch = Dispatch::new(
  "glBindVertexArrayAPPLE",
)

///|
extern "c" fn epoxy_glBindVertexArrayAPPLE(fp : CPtr, array : UInt) -> Unit = "epoxy_glBindVertexArrayAPPLE"

///|
pub fn gl_bind_vertex_array_apple(array : UInt) -> Unit {
  epoxy_glBindVertexArrayAPPLE(d_glBindVertexArrayAPPLE.get(), array)
}

///|
let d_glBindVertexArrayOES : Dispatch = Dispatch::with_aliases(
  "glBindVertexArrayOES",
  ["glBindVertexArray"],
)

///|
extern "c" fn epoxy_glBindVertexArrayOES(fp : CPtr, array : UInt) -> Unit = "epoxy_glBindVertexArrayOES"

///|
pub fn gl_bind_vertex_array_oes(array : UInt) -> Unit {
  epoxy_glBindVertexArrayOES(d_glBindVertexArrayOES.get(), array)
}

///|
let d_glBindVertexBuffer : Dispatch = Dispatch::new("glBindVertexBuffer")

///|
extern "c" fn epoxy_glBindVertexBuffer(
  fp : CPtr,
  bindingindex : UInt,
  buffer : UInt,
  offset : Int64,
  stride : Int,
) -> Unit = "epoxy_glBindVertexBuffer"

///|
pub fn gl_bind_vertex_buffer(
  bindingindex : UInt,
  buffer : UInt,
  offset : Int64,
  stride : Int,
) -> Unit {
  epoxy_glBindVertexBuffer(
    d_glBindVertexBuffer.get(),
    bindingindex,
    buffer,
    offset,
    stride,
  )
}

///|
let d_glBindVertexShaderEXT : Dispatch = Dispatch::new("glBindVertexShaderEXT")

///|
extern "c" fn epoxy_glBindVertexShaderEXT(fp : CPtr, id : UInt) -> Unit = "epoxy_glBindVertexShaderEXT"

///|
pub fn gl_bind_vertex_shader_ext(id : UInt) -> Unit {
  epoxy_glBindVertexShaderEXT(d_glBindVertexShaderEXT.get(), id)
}

///|
let d_glBindVideoCaptureStreamBufferNV : Dispatch = Dispatch::new(
  "glBindVideoCaptureStreamBufferNV",
)

///|
extern "c" fn epoxy_glBindVideoCaptureStreamBufferNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  frame_region : UInt,
  offset : Int64,
) -> Unit = "epoxy_glBindVideoCaptureStreamBufferNV"

///|
pub fn gl_bind_video_capture_stream_buffer_nv(
  video_capture_slot : UInt,
  stream : UInt,
  frame_region : UInt,
  offset : Int64,
) -> Unit {
  epoxy_glBindVideoCaptureStreamBufferNV(
    d_glBindVideoCaptureStreamBufferNV.get(),
    video_capture_slot,
    stream,
    frame_region,
    offset,
  )
}

///|
let d_glBindVideoCaptureStreamTextureNV : Dispatch = Dispatch::new(
  "glBindVideoCaptureStreamTextureNV",
)

///|
extern "c" fn epoxy_glBindVideoCaptureStreamTextureNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  frame_region : UInt,
  target : UInt,
  texture : UInt,
) -> Unit = "epoxy_glBindVideoCaptureStreamTextureNV"

///|
pub fn gl_bind_video_capture_stream_texture_nv(
  video_capture_slot : UInt,
  stream : UInt,
  frame_region : UInt,
  target : UInt,
  texture : UInt,
) -> Unit {
  epoxy_glBindVideoCaptureStreamTextureNV(
    d_glBindVideoCaptureStreamTextureNV.get(),
    video_capture_slot,
    stream,
    frame_region,
    target,
    texture,
  )
}

///|
let d_glBinormal3bEXT : Dispatch = Dispatch::new("glBinormal3bEXT")

///|
extern "c" fn epoxy_glBinormal3bEXT(
  fp : CPtr,
  bx : Int,
  by : Int,
  bz : Int,
) -> Unit = "epoxy_glBinormal3bEXT"

///|
pub fn gl_binormal3b_ext(bx : Int, by : Int, bz : Int) -> Unit {
  epoxy_glBinormal3bEXT(d_glBinormal3bEXT.get(), bx, by, bz)
}

///|
let d_glBinormal3bvEXT : Dispatch = Dispatch::new("glBinormal3bvEXT")

///|
#borrow(v)
extern "c" fn epoxy_glBinormal3bvEXT(fp : CPtr, v : Bytes) -> Unit = "epoxy_glBinormal3bvEXT"

///|
pub fn gl_binormal3bv_ext(v : Bytes) -> Unit {
  epoxy_glBinormal3bvEXT(d_glBinormal3bvEXT.get(), v)
}

///|
let d_glBinormal3dEXT : Dispatch = Dispatch::new("glBinormal3dEXT")

///|
extern "c" fn epoxy_glBinormal3dEXT(
  fp : CPtr,
  bx : Double,
  by : Double,
  bz : Double,
) -> Unit = "epoxy_glBinormal3dEXT"

///|
pub fn gl_binormal3d_ext(bx : Double, by : Double, bz : Double) -> Unit {
  epoxy_glBinormal3dEXT(d_glBinormal3dEXT.get(), bx, by, bz)
}

///|
let d_glBinormal3dvEXT : Dispatch = Dispatch::new("glBinormal3dvEXT")

///|
#borrow(v)
extern "c" fn epoxy_glBinormal3dvEXT(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glBinormal3dvEXT"

///|
pub fn gl_binormal3dv_ext(v : FixedArray[Double]) -> Unit {
  epoxy_glBinormal3dvEXT(d_glBinormal3dvEXT.get(), v)
}

///|
let d_glBinormal3fEXT : Dispatch = Dispatch::new("glBinormal3fEXT")

///|
extern "c" fn epoxy_glBinormal3fEXT(
  fp : CPtr,
  bx : Float,
  by : Float,
  bz : Float,
) -> Unit = "epoxy_glBinormal3fEXT"

///|
pub fn gl_binormal3f_ext(bx : Float, by : Float, bz : Float) -> Unit {
  epoxy_glBinormal3fEXT(d_glBinormal3fEXT.get(), bx, by, bz)
}

///|
let d_glBinormal3fvEXT : Dispatch = Dispatch::new("glBinormal3fvEXT")

///|
#borrow(v)
extern "c" fn epoxy_glBinormal3fvEXT(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glBinormal3fvEXT"

///|
pub fn gl_binormal3fv_ext(v : FixedArray[Float]) -> Unit {
  epoxy_glBinormal3fvEXT(d_glBinormal3fvEXT.get(), v)
}

///|
let d_glBinormal3iEXT : Dispatch = Dispatch::new("glBinormal3iEXT")

///|
extern "c" fn epoxy_glBinormal3iEXT(
  fp : CPtr,
  bx : Int,
  by : Int,
  bz : Int,
) -> Unit = "epoxy_glBinormal3iEXT"

///|
pub fn gl_binormal3i_ext(bx : Int, by : Int, bz : Int) -> Unit {
  epoxy_glBinormal3iEXT(d_glBinormal3iEXT.get(), bx, by, bz)
}

///|
let d_glBinormal3ivEXT : Dispatch = Dispatch::new("glBinormal3ivEXT")

///|
#borrow(v)
extern "c" fn epoxy_glBinormal3ivEXT(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glBinormal3ivEXT"

///|
pub fn gl_binormal3iv_ext(v : FixedArray[Int]) -> Unit {
  epoxy_glBinormal3ivEXT(d_glBinormal3ivEXT.get(), v)
}

///|
let d_glBinormal3sEXT : Dispatch = Dispatch::new("glBinormal3sEXT")

///|
extern "c" fn epoxy_glBinormal3sEXT(
  fp : CPtr,
  bx : Int,
  by : Int,
  bz : Int,
) -> Unit = "epoxy_glBinormal3sEXT"

///|
pub fn gl_binormal3s_ext(bx : Int, by : Int, bz : Int) -> Unit {
  epoxy_glBinormal3sEXT(d_glBinormal3sEXT.get(), bx, by, bz)
}

///|
let d_glBinormal3svEXT : Dispatch = Dispatch::new("glBinormal3svEXT")

///|
#borrow(v)
extern "c" fn epoxy_glBinormal3svEXT(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glBinormal3svEXT"

///|
pub fn gl_binormal3sv_ext(v : FixedArray[Int16]) -> Unit {
  epoxy_glBinormal3svEXT(d_glBinormal3svEXT.get(), v)
}

///|
let d_glBinormalPointerEXT : Dispatch = Dispatch::new("glBinormalPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glBinormalPointerEXT(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glBinormalPointerEXT"

///|
pub fn gl_binormal_pointer_ext(
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glBinormalPointerEXT(
    d_glBinormalPointerEXT.get(),
    type_,
    stride,
    pointer,
  )
}

///|
let d_glBitmap : Dispatch = Dispatch::new("glBitmap")

///|
#borrow(bitmap)
extern "c" fn epoxy_glBitmap(
  fp : CPtr,
  width : Int,
  height : Int,
  xorig : Float,
  yorig : Float,
  xmove : Float,
  ymove : Float,
  bitmap : Bytes,
) -> Unit = "epoxy_glBitmap"

///|
pub fn gl_bitmap(
  width : Int,
  height : Int,
  xorig : Float,
  yorig : Float,
  xmove : Float,
  ymove : Float,
  bitmap : Bytes,
) -> Unit {
  epoxy_glBitmap(
    d_glBitmap.get(),
    width,
    height,
    xorig,
    yorig,
    xmove,
    ymove,
    bitmap,
  )
}

///|
let d_glBitmapxOES : Dispatch = Dispatch::new("glBitmapxOES")

///|
#borrow(bitmap)
extern "c" fn epoxy_glBitmapxOES(
  fp : CPtr,
  width : Int,
  height : Int,
  xorig : Int,
  yorig : Int,
  xmove : Int,
  ymove : Int,
  bitmap : Bytes,
) -> Unit = "epoxy_glBitmapxOES"

///|
pub fn gl_bitmapx_oes(
  width : Int,
  height : Int,
  xorig : Int,
  yorig : Int,
  xmove : Int,
  ymove : Int,
  bitmap : Bytes,
) -> Unit {
  epoxy_glBitmapxOES(
    d_glBitmapxOES.get(),
    width,
    height,
    xorig,
    yorig,
    xmove,
    ymove,
    bitmap,
  )
}

///|
let d_glBlendBarrier : Dispatch = Dispatch::with_aliases("glBlendBarrier", [
  "glBlendBarrierKHR", "glBlendBarrierNV",
])

///|
extern "c" fn epoxy_glBlendBarrier(fp : CPtr) -> Unit = "epoxy_glBlendBarrier"

///|
pub fn gl_blend_barrier() -> Unit {
  epoxy_glBlendBarrier(d_glBlendBarrier.get())
}

///|
let d_glBlendBarrierKHR : Dispatch = Dispatch::with_aliases(
  "glBlendBarrierKHR",
  ["glBlendBarrier", "glBlendBarrierNV"],
)

///|
extern "c" fn epoxy_glBlendBarrierKHR(fp : CPtr) -> Unit = "epoxy_glBlendBarrierKHR"

///|
pub fn gl_blend_barrier_khr() -> Unit {
  epoxy_glBlendBarrierKHR(d_glBlendBarrierKHR.get())
}

///|
let d_glBlendBarrierNV : Dispatch = Dispatch::with_aliases("glBlendBarrierNV", [
  "glBlendBarrier", "glBlendBarrierKHR",
])

///|
extern "c" fn epoxy_glBlendBarrierNV(fp : CPtr) -> Unit = "epoxy_glBlendBarrierNV"

///|
pub fn gl_blend_barrier_nv() -> Unit {
  epoxy_glBlendBarrierNV(d_glBlendBarrierNV.get())
}

///|
let d_glBlendColor : Dispatch = Dispatch::with_aliases("glBlendColor", [
  "glBlendColorEXT",
])

///|
extern "c" fn epoxy_glBlendColor(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit = "epoxy_glBlendColor"

///|
pub fn gl_blend_color(
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit {
  epoxy_glBlendColor(d_glBlendColor.get(), red, green, blue, alpha)
}

///|
let d_glBlendColorEXT : Dispatch = Dispatch::with_aliases("glBlendColorEXT", [
  "glBlendColor",
])

///|
extern "c" fn epoxy_glBlendColorEXT(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit = "epoxy_glBlendColorEXT"

///|
pub fn gl_blend_color_ext(
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit {
  epoxy_glBlendColorEXT(d_glBlendColorEXT.get(), red, green, blue, alpha)
}

///|
let d_glBlendColorxOES : Dispatch = Dispatch::new("glBlendColorxOES")

///|
extern "c" fn epoxy_glBlendColorxOES(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glBlendColorxOES"

///|
pub fn gl_blend_colorx_oes(
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit {
  epoxy_glBlendColorxOES(d_glBlendColorxOES.get(), red, green, blue, alpha)
}

///|
let d_glBlendEquation : Dispatch = Dispatch::with_aliases("glBlendEquation", [
  "glBlendEquationEXT",
])

///|
extern "c" fn epoxy_glBlendEquation(fp : CPtr, mode : UInt) -> Unit = "epoxy_glBlendEquation"

///|
pub fn gl_blend_equation(mode : UInt) -> Unit {
  epoxy_glBlendEquation(d_glBlendEquation.get(), mode)
}

///|
let d_glBlendEquationEXT : Dispatch = Dispatch::with_aliases(
  "glBlendEquationEXT",
  ["glBlendEquation"],
)

///|
extern "c" fn epoxy_glBlendEquationEXT(fp : CPtr, mode : UInt) -> Unit = "epoxy_glBlendEquationEXT"

///|
pub fn gl_blend_equation_ext(mode : UInt) -> Unit {
  epoxy_glBlendEquationEXT(d_glBlendEquationEXT.get(), mode)
}

///|
let d_glBlendEquationIndexedAMD : Dispatch = Dispatch::with_aliases(
  "glBlendEquationIndexedAMD",
  [
    "glBlendEquationi", "glBlendEquationiARB", "glBlendEquationiEXT", "glBlendEquationiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationIndexedAMD(
  fp : CPtr,
  buf : UInt,
  mode : UInt,
) -> Unit = "epoxy_glBlendEquationIndexedAMD"

///|
pub fn gl_blend_equation_indexed_amd(buf : UInt, mode : UInt) -> Unit {
  epoxy_glBlendEquationIndexedAMD(d_glBlendEquationIndexedAMD.get(), buf, mode)
}

///|
let d_glBlendEquationOES : Dispatch = Dispatch::new("glBlendEquationOES")

///|
extern "c" fn epoxy_glBlendEquationOES(fp : CPtr, mode : UInt) -> Unit = "epoxy_glBlendEquationOES"

///|
pub fn gl_blend_equation_oes(mode : UInt) -> Unit {
  epoxy_glBlendEquationOES(d_glBlendEquationOES.get(), mode)
}

///|
let d_glBlendEquationSeparate : Dispatch = Dispatch::with_aliases(
  "glBlendEquationSeparate",
  ["glBlendEquationSeparateEXT"],
)

///|
extern "c" fn epoxy_glBlendEquationSeparate(
  fp : CPtr,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparate"

///|
pub fn gl_blend_equation_separate(modeRGB : UInt, modeAlpha : UInt) -> Unit {
  epoxy_glBlendEquationSeparate(
    d_glBlendEquationSeparate.get(),
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationSeparateEXT : Dispatch = Dispatch::with_aliases(
  "glBlendEquationSeparateEXT",
  ["glBlendEquationSeparate"],
)

///|
extern "c" fn epoxy_glBlendEquationSeparateEXT(
  fp : CPtr,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparateEXT"

///|
pub fn gl_blend_equation_separate_ext(modeRGB : UInt, modeAlpha : UInt) -> Unit {
  epoxy_glBlendEquationSeparateEXT(
    d_glBlendEquationSeparateEXT.get(),
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationSeparateIndexedAMD : Dispatch = Dispatch::with_aliases(
  "glBlendEquationSeparateIndexedAMD",
  [
    "glBlendEquationSeparatei", "glBlendEquationSeparateiARB", "glBlendEquationSeparateiEXT",
    "glBlendEquationSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationSeparateIndexedAMD(
  fp : CPtr,
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparateIndexedAMD"

///|
pub fn gl_blend_equation_separate_indexed_amd(
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit {
  epoxy_glBlendEquationSeparateIndexedAMD(
    d_glBlendEquationSeparateIndexedAMD.get(),
    buf,
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationSeparateOES : Dispatch = Dispatch::new(
  "glBlendEquationSeparateOES",
)

///|
extern "c" fn epoxy_glBlendEquationSeparateOES(
  fp : CPtr,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparateOES"

///|
pub fn gl_blend_equation_separate_oes(modeRGB : UInt, modeAlpha : UInt) -> Unit {
  epoxy_glBlendEquationSeparateOES(
    d_glBlendEquationSeparateOES.get(),
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationSeparatei : Dispatch = Dispatch::with_aliases(
  "glBlendEquationSeparatei",
  [
    "glBlendEquationSeparateIndexedAMD", "glBlendEquationSeparateiARB", "glBlendEquationSeparateiEXT",
    "glBlendEquationSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationSeparatei(
  fp : CPtr,
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparatei"

///|
pub fn gl_blend_equation_separatei(
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit {
  epoxy_glBlendEquationSeparatei(
    d_glBlendEquationSeparatei.get(),
    buf,
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationSeparateiARB : Dispatch = Dispatch::with_aliases(
  "glBlendEquationSeparateiARB",
  [
    "glBlendEquationSeparateIndexedAMD", "glBlendEquationSeparatei", "glBlendEquationSeparateiEXT",
    "glBlendEquationSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationSeparateiARB(
  fp : CPtr,
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparateiARB"

///|
pub fn gl_blend_equation_separatei_arb(
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit {
  epoxy_glBlendEquationSeparateiARB(
    d_glBlendEquationSeparateiARB.get(),
    buf,
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationSeparateiEXT : Dispatch = Dispatch::with_aliases(
  "glBlendEquationSeparateiEXT",
  [
    "glBlendEquationSeparateIndexedAMD", "glBlendEquationSeparatei", "glBlendEquationSeparateiARB",
    "glBlendEquationSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationSeparateiEXT(
  fp : CPtr,
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparateiEXT"

///|
pub fn gl_blend_equation_separatei_ext(
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit {
  epoxy_glBlendEquationSeparateiEXT(
    d_glBlendEquationSeparateiEXT.get(),
    buf,
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationSeparateiOES : Dispatch = Dispatch::with_aliases(
  "glBlendEquationSeparateiOES",
  [
    "glBlendEquationSeparateIndexedAMD", "glBlendEquationSeparatei", "glBlendEquationSeparateiARB",
    "glBlendEquationSeparateiEXT",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationSeparateiOES(
  fp : CPtr,
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit = "epoxy_glBlendEquationSeparateiOES"

///|
pub fn gl_blend_equation_separatei_oes(
  buf : UInt,
  modeRGB : UInt,
  modeAlpha : UInt,
) -> Unit {
  epoxy_glBlendEquationSeparateiOES(
    d_glBlendEquationSeparateiOES.get(),
    buf,
    modeRGB,
    modeAlpha,
  )
}

///|
let d_glBlendEquationi : Dispatch = Dispatch::with_aliases("glBlendEquationi", [
  "glBlendEquationIndexedAMD", "glBlendEquationiARB", "glBlendEquationiEXT", "glBlendEquationiOES",
])

///|
extern "c" fn epoxy_glBlendEquationi(
  fp : CPtr,
  buf : UInt,
  mode : UInt,
) -> Unit = "epoxy_glBlendEquationi"

///|
pub fn gl_blend_equationi(buf : UInt, mode : UInt) -> Unit {
  epoxy_glBlendEquationi(d_glBlendEquationi.get(), buf, mode)
}

///|
let d_glBlendEquationiARB : Dispatch = Dispatch::with_aliases(
  "glBlendEquationiARB",
  [
    "glBlendEquationIndexedAMD", "glBlendEquationi", "glBlendEquationiEXT", "glBlendEquationiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationiARB(
  fp : CPtr,
  buf : UInt,
  mode : UInt,
) -> Unit = "epoxy_glBlendEquationiARB"

///|
pub fn gl_blend_equationi_arb(buf : UInt, mode : UInt) -> Unit {
  epoxy_glBlendEquationiARB(d_glBlendEquationiARB.get(), buf, mode)
}

///|
let d_glBlendEquationiEXT : Dispatch = Dispatch::with_aliases(
  "glBlendEquationiEXT",
  [
    "glBlendEquationIndexedAMD", "glBlendEquationi", "glBlendEquationiARB", "glBlendEquationiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationiEXT(
  fp : CPtr,
  buf : UInt,
  mode : UInt,
) -> Unit = "epoxy_glBlendEquationiEXT"

///|
pub fn gl_blend_equationi_ext(buf : UInt, mode : UInt) -> Unit {
  epoxy_glBlendEquationiEXT(d_glBlendEquationiEXT.get(), buf, mode)
}

///|
let d_glBlendEquationiOES : Dispatch = Dispatch::with_aliases(
  "glBlendEquationiOES",
  [
    "glBlendEquationIndexedAMD", "glBlendEquationi", "glBlendEquationiARB", "glBlendEquationiEXT",
  ],
)

///|
extern "c" fn epoxy_glBlendEquationiOES(
  fp : CPtr,
  buf : UInt,
  mode : UInt,
) -> Unit = "epoxy_glBlendEquationiOES"

///|
pub fn gl_blend_equationi_oes(buf : UInt, mode : UInt) -> Unit {
  epoxy_glBlendEquationiOES(d_glBlendEquationiOES.get(), buf, mode)
}

///|
let d_glBlendFunc : Dispatch = Dispatch::new("glBlendFunc")

///|
extern "c" fn epoxy_glBlendFunc(
  fp : CPtr,
  sfactor : UInt,
  dfactor : UInt,
) -> Unit = "epoxy_glBlendFunc"

///|
pub fn gl_blend_func(sfactor : UInt, dfactor : UInt) -> Unit {
  epoxy_glBlendFunc(d_glBlendFunc.get(), sfactor, dfactor)
}

///|
let d_glBlendFuncIndexedAMD : Dispatch = Dispatch::with_aliases(
  "glBlendFuncIndexedAMD",
  ["glBlendFunci", "glBlendFunciARB", "glBlendFunciEXT", "glBlendFunciOES"],
)

///|
extern "c" fn epoxy_glBlendFuncIndexedAMD(
  fp : CPtr,
  buf : UInt,
  src : UInt,
  dst : UInt,
) -> Unit = "epoxy_glBlendFuncIndexedAMD"

///|
pub fn gl_blend_func_indexed_amd(buf : UInt, src : UInt, dst : UInt) -> Unit {
  epoxy_glBlendFuncIndexedAMD(d_glBlendFuncIndexedAMD.get(), buf, src, dst)
}

///|
let d_glBlendFuncSeparate : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparate",
  ["glBlendFuncSeparateEXT", "glBlendFuncSeparateINGR"],
)

///|
extern "c" fn epoxy_glBlendFuncSeparate(
  fp : CPtr,
  sfactorRGB : UInt,
  dfactorRGB : UInt,
  sfactorAlpha : UInt,
  dfactorAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparate"

///|
pub fn gl_blend_func_separate(
  sfactorRGB : UInt,
  dfactorRGB : UInt,
  sfactorAlpha : UInt,
  dfactorAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparate(
    d_glBlendFuncSeparate.get(),
    sfactorRGB,
    dfactorRGB,
    sfactorAlpha,
    dfactorAlpha,
  )
}

///|
let d_glBlendFuncSeparateEXT : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparateEXT",
  ["glBlendFuncSeparate", "glBlendFuncSeparateINGR"],
)

///|
extern "c" fn epoxy_glBlendFuncSeparateEXT(
  fp : CPtr,
  sfactorRGB : UInt,
  dfactorRGB : UInt,
  sfactorAlpha : UInt,
  dfactorAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparateEXT"

///|
pub fn gl_blend_func_separate_ext(
  sfactorRGB : UInt,
  dfactorRGB : UInt,
  sfactorAlpha : UInt,
  dfactorAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparateEXT(
    d_glBlendFuncSeparateEXT.get(),
    sfactorRGB,
    dfactorRGB,
    sfactorAlpha,
    dfactorAlpha,
  )
}

///|
let d_glBlendFuncSeparateINGR : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparateINGR",
  ["glBlendFuncSeparate", "glBlendFuncSeparateEXT"],
)

///|
extern "c" fn epoxy_glBlendFuncSeparateINGR(
  fp : CPtr,
  sfactorRGB : UInt,
  dfactorRGB : UInt,
  sfactorAlpha : UInt,
  dfactorAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparateINGR"

///|
pub fn gl_blend_func_separate_ingr(
  sfactorRGB : UInt,
  dfactorRGB : UInt,
  sfactorAlpha : UInt,
  dfactorAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparateINGR(
    d_glBlendFuncSeparateINGR.get(),
    sfactorRGB,
    dfactorRGB,
    sfactorAlpha,
    dfactorAlpha,
  )
}

///|
let d_glBlendFuncSeparateIndexedAMD : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparateIndexedAMD",
  [
    "glBlendFuncSeparatei", "glBlendFuncSeparateiARB", "glBlendFuncSeparateiEXT",
    "glBlendFuncSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendFuncSeparateIndexedAMD(
  fp : CPtr,
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparateIndexedAMD"

///|
pub fn gl_blend_func_separate_indexed_amd(
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparateIndexedAMD(
    d_glBlendFuncSeparateIndexedAMD.get(),
    buf,
    srcRGB,
    dstRGB,
    srcAlpha,
    dstAlpha,
  )
}

///|
let d_glBlendFuncSeparateOES : Dispatch = Dispatch::new(
  "glBlendFuncSeparateOES",
)

///|
extern "c" fn epoxy_glBlendFuncSeparateOES(
  fp : CPtr,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparateOES"

///|
pub fn gl_blend_func_separate_oes(
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparateOES(
    d_glBlendFuncSeparateOES.get(),
    srcRGB,
    dstRGB,
    srcAlpha,
    dstAlpha,
  )
}

///|
let d_glBlendFuncSeparatei : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparatei",
  [
    "glBlendFuncSeparateIndexedAMD", "glBlendFuncSeparateiARB", "glBlendFuncSeparateiEXT",
    "glBlendFuncSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendFuncSeparatei(
  fp : CPtr,
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparatei"

///|
pub fn gl_blend_func_separatei(
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparatei(
    d_glBlendFuncSeparatei.get(),
    buf,
    srcRGB,
    dstRGB,
    srcAlpha,
    dstAlpha,
  )
}

///|
let d_glBlendFuncSeparateiARB : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparateiARB",
  [
    "glBlendFuncSeparateIndexedAMD", "glBlendFuncSeparatei", "glBlendFuncSeparateiEXT",
    "glBlendFuncSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendFuncSeparateiARB(
  fp : CPtr,
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparateiARB"

///|
pub fn gl_blend_func_separatei_arb(
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparateiARB(
    d_glBlendFuncSeparateiARB.get(),
    buf,
    srcRGB,
    dstRGB,
    srcAlpha,
    dstAlpha,
  )
}

///|
let d_glBlendFuncSeparateiEXT : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparateiEXT",
  [
    "glBlendFuncSeparateIndexedAMD", "glBlendFuncSeparatei", "glBlendFuncSeparateiARB",
    "glBlendFuncSeparateiOES",
  ],
)

///|
extern "c" fn epoxy_glBlendFuncSeparateiEXT(
  fp : CPtr,
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparateiEXT"

///|
pub fn gl_blend_func_separatei_ext(
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparateiEXT(
    d_glBlendFuncSeparateiEXT.get(),
    buf,
    srcRGB,
    dstRGB,
    srcAlpha,
    dstAlpha,
  )
}

///|
let d_glBlendFuncSeparateiOES : Dispatch = Dispatch::with_aliases(
  "glBlendFuncSeparateiOES",
  [
    "glBlendFuncSeparateIndexedAMD", "glBlendFuncSeparatei", "glBlendFuncSeparateiARB",
    "glBlendFuncSeparateiEXT",
  ],
)

///|
extern "c" fn epoxy_glBlendFuncSeparateiOES(
  fp : CPtr,
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit = "epoxy_glBlendFuncSeparateiOES"

///|
pub fn gl_blend_func_separatei_oes(
  buf : UInt,
  srcRGB : UInt,
  dstRGB : UInt,
  srcAlpha : UInt,
  dstAlpha : UInt,
) -> Unit {
  epoxy_glBlendFuncSeparateiOES(
    d_glBlendFuncSeparateiOES.get(),
    buf,
    srcRGB,
    dstRGB,
    srcAlpha,
    dstAlpha,
  )
}

///|
let d_glBlendFunci : Dispatch = Dispatch::with_aliases("glBlendFunci", [
  "glBlendFuncIndexedAMD", "glBlendFunciARB", "glBlendFunciEXT", "glBlendFunciOES",
])

///|
extern "c" fn epoxy_glBlendFunci(
  fp : CPtr,
  buf : UInt,
  src : UInt,
  dst : UInt,
) -> Unit = "epoxy_glBlendFunci"

///|
pub fn gl_blend_funci(buf : UInt, src : UInt, dst : UInt) -> Unit {
  epoxy_glBlendFunci(d_glBlendFunci.get(), buf, src, dst)
}

///|
let d_glBlendFunciARB : Dispatch = Dispatch::with_aliases("glBlendFunciARB", [
  "glBlendFuncIndexedAMD", "glBlendFunci", "glBlendFunciEXT", "glBlendFunciOES",
])

///|
extern "c" fn epoxy_glBlendFunciARB(
  fp : CPtr,
  buf : UInt,
  src : UInt,
  dst : UInt,
) -> Unit = "epoxy_glBlendFunciARB"

///|
pub fn gl_blend_funci_arb(buf : UInt, src : UInt, dst : UInt) -> Unit {
  epoxy_glBlendFunciARB(d_glBlendFunciARB.get(), buf, src, dst)
}

///|
let d_glBlendFunciEXT : Dispatch = Dispatch::with_aliases("glBlendFunciEXT", [
  "glBlendFuncIndexedAMD", "glBlendFunci", "glBlendFunciARB", "glBlendFunciOES",
])

///|
extern "c" fn epoxy_glBlendFunciEXT(
  fp : CPtr,
  buf : UInt,
  src : UInt,
  dst : UInt,
) -> Unit = "epoxy_glBlendFunciEXT"

///|
pub fn gl_blend_funci_ext(buf : UInt, src : UInt, dst : UInt) -> Unit {
  epoxy_glBlendFunciEXT(d_glBlendFunciEXT.get(), buf, src, dst)
}

///|
let d_glBlendFunciOES : Dispatch = Dispatch::with_aliases("glBlendFunciOES", [
  "glBlendFuncIndexedAMD", "glBlendFunci", "glBlendFunciARB", "glBlendFunciEXT",
])

///|
extern "c" fn epoxy_glBlendFunciOES(
  fp : CPtr,
  buf : UInt,
  src : UInt,
  dst : UInt,
) -> Unit = "epoxy_glBlendFunciOES"

///|
pub fn gl_blend_funci_oes(buf : UInt, src : UInt, dst : UInt) -> Unit {
  epoxy_glBlendFunciOES(d_glBlendFunciOES.get(), buf, src, dst)
}

///|
let d_glBlendParameteriNV : Dispatch = Dispatch::new("glBlendParameteriNV")

///|
extern "c" fn epoxy_glBlendParameteriNV(
  fp : CPtr,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glBlendParameteriNV"

///|
pub fn gl_blend_parameteri_nv(pname : UInt, value : Int) -> Unit {
  epoxy_glBlendParameteriNV(d_glBlendParameteriNV.get(), pname, value)
}

///|
let d_glBlitFramebuffer : Dispatch = Dispatch::with_aliases(
  "glBlitFramebuffer",
  ["glBlitFramebufferEXT", "glBlitFramebufferNV"],
)

///|
extern "c" fn epoxy_glBlitFramebuffer(
  fp : CPtr,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glBlitFramebuffer"

///|
pub fn gl_blit_framebuffer(
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glBlitFramebuffer(
    d_glBlitFramebuffer.get(),
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    mask,
    filter,
  )
}

///|
let d_glBlitFramebufferANGLE : Dispatch = Dispatch::new(
  "glBlitFramebufferANGLE",
)

///|
extern "c" fn epoxy_glBlitFramebufferANGLE(
  fp : CPtr,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glBlitFramebufferANGLE"

///|
pub fn gl_blit_framebuffer_angle(
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glBlitFramebufferANGLE(
    d_glBlitFramebufferANGLE.get(),
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    mask,
    filter,
  )
}

///|
let d_glBlitFramebufferEXT : Dispatch = Dispatch::with_aliases(
  "glBlitFramebufferEXT",
  ["glBlitFramebuffer", "glBlitFramebufferNV"],
)

///|
extern "c" fn epoxy_glBlitFramebufferEXT(
  fp : CPtr,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glBlitFramebufferEXT"

///|
pub fn gl_blit_framebuffer_ext(
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glBlitFramebufferEXT(
    d_glBlitFramebufferEXT.get(),
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    mask,
    filter,
  )
}

///|
let d_glBlitFramebufferLayerEXT : Dispatch = Dispatch::new(
  "glBlitFramebufferLayerEXT",
)

///|
extern "c" fn epoxy_glBlitFramebufferLayerEXT(
  fp : CPtr,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  srcLayer : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  dstLayer : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glBlitFramebufferLayerEXT"

///|
pub fn gl_blit_framebuffer_layer_ext(
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  srcLayer : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  dstLayer : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glBlitFramebufferLayerEXT(
    d_glBlitFramebufferLayerEXT.get(),
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    srcLayer,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    dstLayer,
    mask,
    filter,
  )
}

///|
let d_glBlitFramebufferLayersEXT : Dispatch = Dispatch::new(
  "glBlitFramebufferLayersEXT",
)

///|
extern "c" fn epoxy_glBlitFramebufferLayersEXT(
  fp : CPtr,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glBlitFramebufferLayersEXT"

///|
pub fn gl_blit_framebuffer_layers_ext(
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glBlitFramebufferLayersEXT(
    d_glBlitFramebufferLayersEXT.get(),
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    mask,
    filter,
  )
}

///|
let d_glBlitFramebufferNV : Dispatch = Dispatch::with_aliases(
  "glBlitFramebufferNV",
  ["glBlitFramebuffer", "glBlitFramebufferEXT"],
)

///|
extern "c" fn epoxy_glBlitFramebufferNV(
  fp : CPtr,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glBlitFramebufferNV"

///|
pub fn gl_blit_framebuffer_nv(
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glBlitFramebufferNV(
    d_glBlitFramebufferNV.get(),
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    mask,
    filter,
  )
}

///|
let d_glBlitNamedFramebuffer : Dispatch = Dispatch::new(
  "glBlitNamedFramebuffer",
)

///|
extern "c" fn epoxy_glBlitNamedFramebuffer(
  fp : CPtr,
  readFramebuffer : UInt,
  drawFramebuffer : UInt,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glBlitNamedFramebuffer"

///|
pub fn gl_blit_named_framebuffer(
  readFramebuffer : UInt,
  drawFramebuffer : UInt,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glBlitNamedFramebuffer(
    d_glBlitNamedFramebuffer.get(),
    readFramebuffer,
    drawFramebuffer,
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    mask,
    filter,
  )
}

///|
let d_glBufferAddressRangeNV : Dispatch = Dispatch::new(
  "glBufferAddressRangeNV",
)

///|
extern "c" fn epoxy_glBufferAddressRangeNV(
  fp : CPtr,
  pname : UInt,
  index : UInt,
  address : UInt64,
  length : Int64,
) -> Unit = "epoxy_glBufferAddressRangeNV"

///|
pub fn gl_buffer_address_range_nv(
  pname : UInt,
  index : UInt,
  address : UInt64,
  length : Int64,
) -> Unit {
  epoxy_glBufferAddressRangeNV(
    d_glBufferAddressRangeNV.get(),
    pname,
    index,
    address,
    length,
  )
}

///|
let d_glBufferAttachMemoryNV : Dispatch = Dispatch::new(
  "glBufferAttachMemoryNV",
)

///|
extern "c" fn epoxy_glBufferAttachMemoryNV(
  fp : CPtr,
  target : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glBufferAttachMemoryNV"

///|
pub fn gl_buffer_attach_memory_nv(
  target : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glBufferAttachMemoryNV(
    d_glBufferAttachMemoryNV.get(),
    target,
    memory,
    offset,
  )
}

///|
let d_glBufferData : Dispatch = Dispatch::with_aliases("glBufferData", [
  "glBufferDataARB",
])

///|
#borrow(data)
extern "c" fn epoxy_glBufferData(
  fp : CPtr,
  target : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit = "epoxy_glBufferData"

///|
pub fn gl_buffer_data(
  target : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit {
  epoxy_glBufferData(d_glBufferData.get(), target, size, data, usage)
}

///|
let d_glBufferDataARB : Dispatch = Dispatch::with_aliases("glBufferDataARB", [
  "glBufferData",
])

///|
#borrow(data)
extern "c" fn epoxy_glBufferDataARB(
  fp : CPtr,
  target : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit = "epoxy_glBufferDataARB"

///|
pub fn gl_buffer_data_arb(
  target : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit {
  epoxy_glBufferDataARB(d_glBufferDataARB.get(), target, size, data, usage)
}

///|
let d_glBufferPageCommitmentARB : Dispatch = Dispatch::new(
  "glBufferPageCommitmentARB",
)

///|
extern "c" fn epoxy_glBufferPageCommitmentARB(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
  commit : Bool,
) -> Unit = "epoxy_glBufferPageCommitmentARB"

///|
pub fn gl_buffer_page_commitment_arb(
  target : UInt,
  offset : Int64,
  size : Int64,
  commit : Bool,
) -> Unit {
  epoxy_glBufferPageCommitmentARB(
    d_glBufferPageCommitmentARB.get(),
    target,
    offset,
    size,
    commit,
  )
}

///|
let d_glBufferPageCommitmentMemNV : Dispatch = Dispatch::new(
  "glBufferPageCommitmentMemNV",
)

///|
extern "c" fn epoxy_glBufferPageCommitmentMemNV(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
  memory : UInt,
  memOffset : UInt64,
  commit : Bool,
) -> Unit = "epoxy_glBufferPageCommitmentMemNV"

///|
pub fn gl_buffer_page_commitment_mem_nv(
  target : UInt,
  offset : Int64,
  size : Int64,
  memory : UInt,
  memOffset : UInt64,
  commit : Bool,
) -> Unit {
  epoxy_glBufferPageCommitmentMemNV(
    d_glBufferPageCommitmentMemNV.get(),
    target,
    offset,
    size,
    memory,
    memOffset,
    commit,
  )
}

///|
let d_glBufferParameteriAPPLE : Dispatch = Dispatch::new(
  "glBufferParameteriAPPLE",
)

///|
extern "c" fn epoxy_glBufferParameteriAPPLE(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glBufferParameteriAPPLE"

///|
pub fn gl_buffer_parameteri_apple(
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glBufferParameteriAPPLE(
    d_glBufferParameteriAPPLE.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glBufferStorage : Dispatch = Dispatch::with_aliases("glBufferStorage", [
  "glBufferStorageEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glBufferStorage(
  fp : CPtr,
  target : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit = "epoxy_glBufferStorage"

///|
pub fn gl_buffer_storage(
  target : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit {
  epoxy_glBufferStorage(d_glBufferStorage.get(), target, size, data, flags)
}

///|
let d_glBufferStorageEXT : Dispatch = Dispatch::with_aliases(
  "glBufferStorageEXT",
  ["glBufferStorage"],
)

///|
#borrow(data)
extern "c" fn epoxy_glBufferStorageEXT(
  fp : CPtr,
  target : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit = "epoxy_glBufferStorageEXT"

///|
pub fn gl_buffer_storage_ext(
  target : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit {
  epoxy_glBufferStorageEXT(
    d_glBufferStorageEXT.get(),
    target,
    size,
    data,
    flags,
  )
}

///|
let d_glBufferStorageExternalEXT : Dispatch = Dispatch::new(
  "glBufferStorageExternalEXT",
)

///|
extern "c" fn epoxy_glBufferStorageExternalEXT(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
  clientBuffer : GLeglClientBufferEXT,
  flags : UInt,
) -> Unit = "epoxy_glBufferStorageExternalEXT"

///|
pub fn gl_buffer_storage_external_ext(
  target : UInt,
  offset : Int64,
  size : Int64,
  clientBuffer : GLeglClientBufferEXT,
  flags : UInt,
) -> Unit {
  epoxy_glBufferStorageExternalEXT(
    d_glBufferStorageExternalEXT.get(),
    target,
    offset,
    size,
    clientBuffer,
    flags,
  )
}

///|
let d_glBufferStorageMemEXT : Dispatch = Dispatch::new("glBufferStorageMemEXT")

///|
extern "c" fn epoxy_glBufferStorageMemEXT(
  fp : CPtr,
  target : UInt,
  size : Int64,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glBufferStorageMemEXT"

///|
pub fn gl_buffer_storage_mem_ext(
  target : UInt,
  size : Int64,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glBufferStorageMemEXT(
    d_glBufferStorageMemEXT.get(),
    target,
    size,
    memory,
    offset,
  )
}

///|
let d_glBufferSubData : Dispatch = Dispatch::with_aliases("glBufferSubData", [
  "glBufferSubDataARB",
])

///|
#borrow(data)
extern "c" fn epoxy_glBufferSubData(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glBufferSubData"

///|
pub fn gl_buffer_sub_data(
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glBufferSubData(d_glBufferSubData.get(), target, offset, size, data)
}

///|
let d_glBufferSubDataARB : Dispatch = Dispatch::with_aliases(
  "glBufferSubDataARB",
  ["glBufferSubData"],
)

///|
#borrow(data)
extern "c" fn epoxy_glBufferSubDataARB(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glBufferSubDataARB"

///|
pub fn gl_buffer_sub_data_arb(
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glBufferSubDataARB(
    d_glBufferSubDataARB.get(),
    target,
    offset,
    size,
    data,
  )
}

///|
let d_glCallCommandListNV : Dispatch = Dispatch::new("glCallCommandListNV")

///|
extern "c" fn epoxy_glCallCommandListNV(fp : CPtr, list : UInt) -> Unit = "epoxy_glCallCommandListNV"

///|
pub fn gl_call_command_list_nv(list : UInt) -> Unit {
  epoxy_glCallCommandListNV(d_glCallCommandListNV.get(), list)
}

///|
let d_glCallList : Dispatch = Dispatch::new("glCallList")

///|
extern "c" fn epoxy_glCallList(fp : CPtr, list : UInt) -> Unit = "epoxy_glCallList"

///|
pub fn gl_call_list(list : UInt) -> Unit {
  epoxy_glCallList(d_glCallList.get(), list)
}

///|
let d_glCallLists : Dispatch = Dispatch::new("glCallLists")

///|
#borrow(lists)
extern "c" fn epoxy_glCallLists(
  fp : CPtr,
  n : Int,
  type_ : UInt,
  lists : Bytes,
) -> Unit = "epoxy_glCallLists"

///|
pub fn gl_call_lists(n : Int, type_ : UInt, lists : Bytes) -> Unit {
  epoxy_glCallLists(d_glCallLists.get(), n, type_, lists)
}

///|
let d_glCheckFramebufferStatus : Dispatch = Dispatch::with_aliases(
  "glCheckFramebufferStatus",
  ["glCheckFramebufferStatusEXT"],
)

///|
extern "c" fn epoxy_glCheckFramebufferStatus(fp : CPtr, target : UInt) -> UInt = "epoxy_glCheckFramebufferStatus"

///|
pub fn gl_check_framebuffer_status(target : UInt) -> UInt {
  epoxy_glCheckFramebufferStatus(d_glCheckFramebufferStatus.get(), target)
}

///|
let d_glCheckFramebufferStatusEXT : Dispatch = Dispatch::with_aliases(
  "glCheckFramebufferStatusEXT",
  ["glCheckFramebufferStatus"],
)

///|
extern "c" fn epoxy_glCheckFramebufferStatusEXT(
  fp : CPtr,
  target : UInt,
) -> UInt = "epoxy_glCheckFramebufferStatusEXT"

///|
pub fn gl_check_framebuffer_status_ext(target : UInt) -> UInt {
  epoxy_glCheckFramebufferStatusEXT(d_glCheckFramebufferStatusEXT.get(), target)
}

///|
let d_glCheckFramebufferStatusOES : Dispatch = Dispatch::new(
  "glCheckFramebufferStatusOES",
)

///|
extern "c" fn epoxy_glCheckFramebufferStatusOES(
  fp : CPtr,
  target : UInt,
) -> UInt = "epoxy_glCheckFramebufferStatusOES"

///|
pub fn gl_check_framebuffer_status_oes(target : UInt) -> UInt {
  epoxy_glCheckFramebufferStatusOES(d_glCheckFramebufferStatusOES.get(), target)
}

///|
let d_glCheckNamedFramebufferStatus : Dispatch = Dispatch::new(
  "glCheckNamedFramebufferStatus",
)

///|
extern "c" fn epoxy_glCheckNamedFramebufferStatus(
  fp : CPtr,
  framebuffer : UInt,
  target : UInt,
) -> UInt = "epoxy_glCheckNamedFramebufferStatus"

///|
pub fn gl_check_named_framebuffer_status(
  framebuffer : UInt,
  target : UInt,
) -> UInt {
  epoxy_glCheckNamedFramebufferStatus(
    d_glCheckNamedFramebufferStatus.get(),
    framebuffer,
    target,
  )
}

///|
let d_glCheckNamedFramebufferStatusEXT : Dispatch = Dispatch::new(
  "glCheckNamedFramebufferStatusEXT",
)

///|
extern "c" fn epoxy_glCheckNamedFramebufferStatusEXT(
  fp : CPtr,
  framebuffer : UInt,
  target : UInt,
) -> UInt = "epoxy_glCheckNamedFramebufferStatusEXT"

///|
pub fn gl_check_named_framebuffer_status_ext(
  framebuffer : UInt,
  target : UInt,
) -> UInt {
  epoxy_glCheckNamedFramebufferStatusEXT(
    d_glCheckNamedFramebufferStatusEXT.get(),
    framebuffer,
    target,
  )
}

///|
let d_glClampColor : Dispatch = Dispatch::with_aliases("glClampColor", [
  "glClampColorARB",
])

///|
extern "c" fn epoxy_glClampColor(
  fp : CPtr,
  target : UInt,
  clamp : UInt,
) -> Unit = "epoxy_glClampColor"

///|
pub fn gl_clamp_color(target : UInt, clamp : UInt) -> Unit {
  epoxy_glClampColor(d_glClampColor.get(), target, clamp)
}

///|
let d_glClampColorARB : Dispatch = Dispatch::with_aliases("glClampColorARB", [
  "glClampColor",
])

///|
extern "c" fn epoxy_glClampColorARB(
  fp : CPtr,
  target : UInt,
  clamp : UInt,
) -> Unit = "epoxy_glClampColorARB"

///|
pub fn gl_clamp_color_arb(target : UInt, clamp : UInt) -> Unit {
  epoxy_glClampColorARB(d_glClampColorARB.get(), target, clamp)
}

///|
let d_glClear : Dispatch = Dispatch::new("glClear")

///|
extern "c" fn epoxy_glClear(fp : CPtr, mask : UInt) -> Unit = "epoxy_glClear"

///|
pub fn gl_clear(mask : UInt) -> Unit {
  epoxy_glClear(d_glClear.get(), mask)
}

///|
let d_glClearAccum : Dispatch = Dispatch::new("glClearAccum")

///|
extern "c" fn epoxy_glClearAccum(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit = "epoxy_glClearAccum"

///|
pub fn gl_clear_accum(
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit {
  epoxy_glClearAccum(d_glClearAccum.get(), red, green, blue, alpha)
}

///|
let d_glClearAccumxOES : Dispatch = Dispatch::new("glClearAccumxOES")

///|
extern "c" fn epoxy_glClearAccumxOES(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glClearAccumxOES"

///|
pub fn gl_clear_accumx_oes(
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit {
  epoxy_glClearAccumxOES(d_glClearAccumxOES.get(), red, green, blue, alpha)
}

///|
let d_glClearBufferData : Dispatch = Dispatch::new("glClearBufferData")

///|
#borrow(data)
extern "c" fn epoxy_glClearBufferData(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearBufferData"

///|
pub fn gl_clear_buffer_data(
  target : UInt,
  internalformat : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearBufferData(
    d_glClearBufferData.get(),
    target,
    internalformat,
    format,
    type_,
    data,
  )
}

///|
let d_glClearBufferSubData : Dispatch = Dispatch::new("glClearBufferSubData")

///|
#borrow(data)
extern "c" fn epoxy_glClearBufferSubData(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  offset : Int64,
  size : Int64,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearBufferSubData"

///|
pub fn gl_clear_buffer_sub_data(
  target : UInt,
  internalformat : UInt,
  offset : Int64,
  size : Int64,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearBufferSubData(
    d_glClearBufferSubData.get(),
    target,
    internalformat,
    offset,
    size,
    format,
    type_,
    data,
  )
}

///|
let d_glClearBufferfi : Dispatch = Dispatch::new("glClearBufferfi")

///|
extern "c" fn epoxy_glClearBufferfi(
  fp : CPtr,
  buffer : UInt,
  drawbuffer : Int,
  depth : Float,
  stencil : Int,
) -> Unit = "epoxy_glClearBufferfi"

///|
pub fn gl_clear_bufferfi(
  buffer : UInt,
  drawbuffer : Int,
  depth : Float,
  stencil : Int,
) -> Unit {
  epoxy_glClearBufferfi(
    d_glClearBufferfi.get(),
    buffer,
    drawbuffer,
    depth,
    stencil,
  )
}

///|
let d_glClearBufferfv : Dispatch = Dispatch::new("glClearBufferfv")

///|
#borrow(value)
extern "c" fn epoxy_glClearBufferfv(
  fp : CPtr,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glClearBufferfv"

///|
pub fn gl_clear_bufferfv(
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glClearBufferfv(d_glClearBufferfv.get(), buffer, drawbuffer, value)
}

///|
let d_glClearBufferiv : Dispatch = Dispatch::new("glClearBufferiv")

///|
#borrow(value)
extern "c" fn epoxy_glClearBufferiv(
  fp : CPtr,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glClearBufferiv"

///|
pub fn gl_clear_bufferiv(
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glClearBufferiv(d_glClearBufferiv.get(), buffer, drawbuffer, value)
}

///|
let d_glClearBufferuiv : Dispatch = Dispatch::new("glClearBufferuiv")

///|
#borrow(value)
extern "c" fn epoxy_glClearBufferuiv(
  fp : CPtr,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glClearBufferuiv"

///|
pub fn gl_clear_bufferuiv(
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glClearBufferuiv(d_glClearBufferuiv.get(), buffer, drawbuffer, value)
}

///|
let d_glClearColor : Dispatch = Dispatch::new("glClearColor")

///|
extern "c" fn epoxy_glClearColor(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit = "epoxy_glClearColor"

///|
pub fn gl_clear_color(
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit {
  epoxy_glClearColor(d_glClearColor.get(), red, green, blue, alpha)
}

///|
let d_glClearColorIiEXT : Dispatch = Dispatch::new("glClearColorIiEXT")

///|
extern "c" fn epoxy_glClearColorIiEXT(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glClearColorIiEXT"

///|
pub fn gl_clear_color_ii_ext(
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit {
  epoxy_glClearColorIiEXT(d_glClearColorIiEXT.get(), red, green, blue, alpha)
}

///|
let d_glClearColorIuiEXT : Dispatch = Dispatch::new("glClearColorIuiEXT")

///|
extern "c" fn epoxy_glClearColorIuiEXT(
  fp : CPtr,
  red : UInt,
  green : UInt,
  blue : UInt,
  alpha : UInt,
) -> Unit = "epoxy_glClearColorIuiEXT"

///|
pub fn gl_clear_color_iui_ext(
  red : UInt,
  green : UInt,
  blue : UInt,
  alpha : UInt,
) -> Unit {
  epoxy_glClearColorIuiEXT(d_glClearColorIuiEXT.get(), red, green, blue, alpha)
}

///|
let d_glClearColorx : Dispatch = Dispatch::new("glClearColorx")

///|
extern "c" fn epoxy_glClearColorx(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glClearColorx"

///|
pub fn gl_clear_colorx(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glClearColorx(d_glClearColorx.get(), red, green, blue, alpha)
}

///|
let d_glClearColorxOES : Dispatch = Dispatch::new("glClearColorxOES")

///|
extern "c" fn epoxy_glClearColorxOES(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glClearColorxOES"

///|
pub fn gl_clear_colorx_oes(
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit {
  epoxy_glClearColorxOES(d_glClearColorxOES.get(), red, green, blue, alpha)
}

///|
let d_glClearDepth : Dispatch = Dispatch::new("glClearDepth")

///|
extern "c" fn epoxy_glClearDepth(fp : CPtr, depth : Double) -> Unit = "epoxy_glClearDepth"

///|
pub fn gl_clear_depth(depth : Double) -> Unit {
  epoxy_glClearDepth(d_glClearDepth.get(), depth)
}

///|
let d_glClearDepthdNV : Dispatch = Dispatch::new("glClearDepthdNV")

///|
extern "c" fn epoxy_glClearDepthdNV(fp : CPtr, depth : Double) -> Unit = "epoxy_glClearDepthdNV"

///|
pub fn gl_clear_depthd_nv(depth : Double) -> Unit {
  epoxy_glClearDepthdNV(d_glClearDepthdNV.get(), depth)
}

///|
let d_glClearDepthf : Dispatch = Dispatch::with_aliases("glClearDepthf", [
  "glClearDepthfOES",
])

///|
extern "c" fn epoxy_glClearDepthf(fp : CPtr, d : Float) -> Unit = "epoxy_glClearDepthf"

///|
pub fn gl_clear_depthf(d : Float) -> Unit {
  epoxy_glClearDepthf(d_glClearDepthf.get(), d)
}

///|
let d_glClearDepthfOES : Dispatch = Dispatch::with_aliases("glClearDepthfOES", [
  "glClearDepthf",
])

///|
extern "c" fn epoxy_glClearDepthfOES(fp : CPtr, depth : Float) -> Unit = "epoxy_glClearDepthfOES"

///|
pub fn gl_clear_depthf_oes(depth : Float) -> Unit {
  epoxy_glClearDepthfOES(d_glClearDepthfOES.get(), depth)
}

///|
let d_glClearDepthx : Dispatch = Dispatch::new("glClearDepthx")

///|
extern "c" fn epoxy_glClearDepthx(fp : CPtr, depth : Int) -> Unit = "epoxy_glClearDepthx"

///|
pub fn gl_clear_depthx(depth : Int) -> Unit {
  epoxy_glClearDepthx(d_glClearDepthx.get(), depth)
}

///|
let d_glClearDepthxOES : Dispatch = Dispatch::new("glClearDepthxOES")

///|
extern "c" fn epoxy_glClearDepthxOES(fp : CPtr, depth : Int) -> Unit = "epoxy_glClearDepthxOES"

///|
pub fn gl_clear_depthx_oes(depth : Int) -> Unit {
  epoxy_glClearDepthxOES(d_glClearDepthxOES.get(), depth)
}

///|
let d_glClearIndex : Dispatch = Dispatch::new("glClearIndex")

///|
extern "c" fn epoxy_glClearIndex(fp : CPtr, c : Float) -> Unit = "epoxy_glClearIndex"

///|
pub fn gl_clear_index(c : Float) -> Unit {
  epoxy_glClearIndex(d_glClearIndex.get(), c)
}

///|
let d_glClearNamedBufferData : Dispatch = Dispatch::new(
  "glClearNamedBufferData",
)

///|
#borrow(data)
extern "c" fn epoxy_glClearNamedBufferData(
  fp : CPtr,
  buffer : UInt,
  internalformat : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearNamedBufferData"

///|
pub fn gl_clear_named_buffer_data(
  buffer : UInt,
  internalformat : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearNamedBufferData(
    d_glClearNamedBufferData.get(),
    buffer,
    internalformat,
    format,
    type_,
    data,
  )
}

///|
let d_glClearNamedBufferDataEXT : Dispatch = Dispatch::new(
  "glClearNamedBufferDataEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glClearNamedBufferDataEXT(
  fp : CPtr,
  buffer : UInt,
  internalformat : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearNamedBufferDataEXT"

///|
pub fn gl_clear_named_buffer_data_ext(
  buffer : UInt,
  internalformat : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearNamedBufferDataEXT(
    d_glClearNamedBufferDataEXT.get(),
    buffer,
    internalformat,
    format,
    type_,
    data,
  )
}

///|
let d_glClearNamedBufferSubData : Dispatch = Dispatch::new(
  "glClearNamedBufferSubData",
)

///|
#borrow(data)
extern "c" fn epoxy_glClearNamedBufferSubData(
  fp : CPtr,
  buffer : UInt,
  internalformat : UInt,
  offset : Int64,
  size : Int64,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearNamedBufferSubData"

///|
pub fn gl_clear_named_buffer_sub_data(
  buffer : UInt,
  internalformat : UInt,
  offset : Int64,
  size : Int64,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearNamedBufferSubData(
    d_glClearNamedBufferSubData.get(),
    buffer,
    internalformat,
    offset,
    size,
    format,
    type_,
    data,
  )
}

///|
let d_glClearNamedBufferSubDataEXT : Dispatch = Dispatch::new(
  "glClearNamedBufferSubDataEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glClearNamedBufferSubDataEXT(
  fp : CPtr,
  buffer : UInt,
  internalformat : UInt,
  offset : Int64,
  size : Int64,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearNamedBufferSubDataEXT"

///|
pub fn gl_clear_named_buffer_sub_data_ext(
  buffer : UInt,
  internalformat : UInt,
  offset : Int64,
  size : Int64,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearNamedBufferSubDataEXT(
    d_glClearNamedBufferSubDataEXT.get(),
    buffer,
    internalformat,
    offset,
    size,
    format,
    type_,
    data,
  )
}

///|
let d_glClearNamedFramebufferfi : Dispatch = Dispatch::new(
  "glClearNamedFramebufferfi",
)

///|
extern "c" fn epoxy_glClearNamedFramebufferfi(
  fp : CPtr,
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  depth : Float,
  stencil : Int,
) -> Unit = "epoxy_glClearNamedFramebufferfi"

///|
pub fn gl_clear_named_framebufferfi(
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  depth : Float,
  stencil : Int,
) -> Unit {
  epoxy_glClearNamedFramebufferfi(
    d_glClearNamedFramebufferfi.get(),
    framebuffer,
    buffer,
    drawbuffer,
    depth,
    stencil,
  )
}

///|
let d_glClearNamedFramebufferfv : Dispatch = Dispatch::new(
  "glClearNamedFramebufferfv",
)

///|
#borrow(value)
extern "c" fn epoxy_glClearNamedFramebufferfv(
  fp : CPtr,
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glClearNamedFramebufferfv"

///|
pub fn gl_clear_named_framebufferfv(
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glClearNamedFramebufferfv(
    d_glClearNamedFramebufferfv.get(),
    framebuffer,
    buffer,
    drawbuffer,
    value,
  )
}

///|
let d_glClearNamedFramebufferiv : Dispatch = Dispatch::new(
  "glClearNamedFramebufferiv",
)

///|
#borrow(value)
extern "c" fn epoxy_glClearNamedFramebufferiv(
  fp : CPtr,
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glClearNamedFramebufferiv"

///|
pub fn gl_clear_named_framebufferiv(
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glClearNamedFramebufferiv(
    d_glClearNamedFramebufferiv.get(),
    framebuffer,
    buffer,
    drawbuffer,
    value,
  )
}

///|
let d_glClearNamedFramebufferuiv : Dispatch = Dispatch::new(
  "glClearNamedFramebufferuiv",
)

///|
#borrow(value)
extern "c" fn epoxy_glClearNamedFramebufferuiv(
  fp : CPtr,
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glClearNamedFramebufferuiv"

///|
pub fn gl_clear_named_framebufferuiv(
  framebuffer : UInt,
  buffer : UInt,
  drawbuffer : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glClearNamedFramebufferuiv(
    d_glClearNamedFramebufferuiv.get(),
    framebuffer,
    buffer,
    drawbuffer,
    value,
  )
}

///|
let d_glClearPixelLocalStorageuiEXT : Dispatch = Dispatch::new(
  "glClearPixelLocalStorageuiEXT",
)

///|
#borrow(values)
extern "c" fn epoxy_glClearPixelLocalStorageuiEXT(
  fp : CPtr,
  offset : Int,
  n : Int,
  values : FixedArray[UInt],
) -> Unit = "epoxy_glClearPixelLocalStorageuiEXT"

///|
pub fn gl_clear_pixel_local_storageui_ext(
  offset : Int,
  n : Int,
  values : FixedArray[UInt],
) -> Unit {
  epoxy_glClearPixelLocalStorageuiEXT(
    d_glClearPixelLocalStorageuiEXT.get(),
    offset,
    n,
    values,
  )
}

///|
let d_glClearStencil : Dispatch = Dispatch::new("glClearStencil")

///|
extern "c" fn epoxy_glClearStencil(fp : CPtr, s : Int) -> Unit = "epoxy_glClearStencil"

///|
pub fn gl_clear_stencil(s : Int) -> Unit {
  epoxy_glClearStencil(d_glClearStencil.get(), s)
}

///|
let d_glClearTexImage : Dispatch = Dispatch::with_aliases("glClearTexImage", [
  "glClearTexImageEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glClearTexImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearTexImage"

///|
pub fn gl_clear_tex_image(
  texture : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearTexImage(
    d_glClearTexImage.get(),
    texture,
    level,
    format,
    type_,
    data,
  )
}

///|
let d_glClearTexImageEXT : Dispatch = Dispatch::with_aliases(
  "glClearTexImageEXT",
  ["glClearTexImage"],
)

///|
#borrow(data)
extern "c" fn epoxy_glClearTexImageEXT(
  fp : CPtr,
  texture : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearTexImageEXT"

///|
pub fn gl_clear_tex_image_ext(
  texture : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearTexImageEXT(
    d_glClearTexImageEXT.get(),
    texture,
    level,
    format,
    type_,
    data,
  )
}

///|
let d_glClearTexSubImage : Dispatch = Dispatch::with_aliases(
  "glClearTexSubImage",
  ["glClearTexSubImageEXT"],
)

///|
#borrow(data)
extern "c" fn epoxy_glClearTexSubImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearTexSubImage"

///|
pub fn gl_clear_tex_sub_image(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearTexSubImage(
    d_glClearTexSubImage.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    data,
  )
}

///|
let d_glClearTexSubImageEXT : Dispatch = Dispatch::with_aliases(
  "glClearTexSubImageEXT",
  ["glClearTexSubImage"],
)

///|
#borrow(data)
extern "c" fn epoxy_glClearTexSubImageEXT(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glClearTexSubImageEXT"

///|
pub fn gl_clear_tex_sub_image_ext(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glClearTexSubImageEXT(
    d_glClearTexSubImageEXT.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    data,
  )
}

///|
let d_glClientActiveTexture : Dispatch = Dispatch::with_aliases(
  "glClientActiveTexture",
  ["glClientActiveTextureARB"],
)

///|
extern "c" fn epoxy_glClientActiveTexture(fp : CPtr, texture : UInt) -> Unit = "epoxy_glClientActiveTexture"

///|
pub fn gl_client_active_texture(texture : UInt) -> Unit {
  epoxy_glClientActiveTexture(d_glClientActiveTexture.get(), texture)
}

///|
let d_glClientActiveTextureARB : Dispatch = Dispatch::with_aliases(
  "glClientActiveTextureARB",
  ["glClientActiveTexture"],
)

///|
extern "c" fn epoxy_glClientActiveTextureARB(fp : CPtr, texture : UInt) -> Unit = "epoxy_glClientActiveTextureARB"

///|
pub fn gl_client_active_texture_arb(texture : UInt) -> Unit {
  epoxy_glClientActiveTextureARB(d_glClientActiveTextureARB.get(), texture)
}

///|
let d_glClientActiveVertexStreamATI : Dispatch = Dispatch::new(
  "glClientActiveVertexStreamATI",
)

///|
extern "c" fn epoxy_glClientActiveVertexStreamATI(
  fp : CPtr,
  stream : UInt,
) -> Unit = "epoxy_glClientActiveVertexStreamATI"

///|
pub fn gl_client_active_vertex_stream_ati(stream : UInt) -> Unit {
  epoxy_glClientActiveVertexStreamATI(
    d_glClientActiveVertexStreamATI.get(),
    stream,
  )
}

///|
let d_glClientAttribDefaultEXT : Dispatch = Dispatch::new(
  "glClientAttribDefaultEXT",
)

///|
extern "c" fn epoxy_glClientAttribDefaultEXT(fp : CPtr, mask : UInt) -> Unit = "epoxy_glClientAttribDefaultEXT"

///|
pub fn gl_client_attrib_default_ext(mask : UInt) -> Unit {
  epoxy_glClientAttribDefaultEXT(d_glClientAttribDefaultEXT.get(), mask)
}

///|
let d_glClientWaitSemaphoreui64NVX : Dispatch = Dispatch::new(
  "glClientWaitSemaphoreui64NVX",
)

///|
#borrow(semaphoreArray, fenceValueArray)
extern "c" fn epoxy_glClientWaitSemaphoreui64NVX(
  fp : CPtr,
  fenceObjectCount : Int,
  semaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
) -> Unit = "epoxy_glClientWaitSemaphoreui64NVX"

///|
pub fn gl_client_wait_semaphoreui64_nvx(
  fenceObjectCount : Int,
  semaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
) -> Unit {
  epoxy_glClientWaitSemaphoreui64NVX(
    d_glClientWaitSemaphoreui64NVX.get(),
    fenceObjectCount,
    semaphoreArray,
    fenceValueArray,
  )
}

///|
let d_glClientWaitSync : Dispatch = Dispatch::with_aliases("glClientWaitSync", [
  "glClientWaitSyncAPPLE",
])

///|
extern "c" fn epoxy_glClientWaitSync(
  fp : CPtr,
  sync : GLsync,
  flags : UInt,
  timeout : UInt64,
) -> UInt = "epoxy_glClientWaitSync"

///|
pub fn gl_client_wait_sync(
  sync : GLsync,
  flags : UInt,
  timeout : UInt64,
) -> UInt {
  epoxy_glClientWaitSync(d_glClientWaitSync.get(), sync, flags, timeout)
}

///|
let d_glClientWaitSyncAPPLE : Dispatch = Dispatch::with_aliases(
  "glClientWaitSyncAPPLE",
  ["glClientWaitSync"],
)

///|
extern "c" fn epoxy_glClientWaitSyncAPPLE(
  fp : CPtr,
  sync : GLsync,
  flags : UInt,
  timeout : UInt64,
) -> UInt = "epoxy_glClientWaitSyncAPPLE"

///|
pub fn gl_client_wait_sync_apple(
  sync : GLsync,
  flags : UInt,
  timeout : UInt64,
) -> UInt {
  epoxy_glClientWaitSyncAPPLE(
    d_glClientWaitSyncAPPLE.get(),
    sync,
    flags,
    timeout,
  )
}

///|
let d_glClipControl : Dispatch = Dispatch::with_aliases("glClipControl", [
  "glClipControlEXT",
])

///|
extern "c" fn epoxy_glClipControl(
  fp : CPtr,
  origin : UInt,
  depth : UInt,
) -> Unit = "epoxy_glClipControl"

///|
pub fn gl_clip_control(origin : UInt, depth : UInt) -> Unit {
  epoxy_glClipControl(d_glClipControl.get(), origin, depth)
}

///|
let d_glClipControlEXT : Dispatch = Dispatch::with_aliases("glClipControlEXT", [
  "glClipControl",
])

///|
extern "c" fn epoxy_glClipControlEXT(
  fp : CPtr,
  origin : UInt,
  depth : UInt,
) -> Unit = "epoxy_glClipControlEXT"

///|
pub fn gl_clip_control_ext(origin : UInt, depth : UInt) -> Unit {
  epoxy_glClipControlEXT(d_glClipControlEXT.get(), origin, depth)
}

///|
let d_glClipPlane : Dispatch = Dispatch::new("glClipPlane")

///|
#borrow(equation)
extern "c" fn epoxy_glClipPlane(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Double],
) -> Unit = "epoxy_glClipPlane"

///|
pub fn gl_clip_plane(plane : UInt, equation : FixedArray[Double]) -> Unit {
  epoxy_glClipPlane(d_glClipPlane.get(), plane, equation)
}

///|
let d_glClipPlanef : Dispatch = Dispatch::new("glClipPlanef")

///|
#borrow(eqn)
extern "c" fn epoxy_glClipPlanef(
  fp : CPtr,
  p : UInt,
  eqn : FixedArray[Float],
) -> Unit = "epoxy_glClipPlanef"

///|
pub fn gl_clip_planef(p : UInt, eqn : FixedArray[Float]) -> Unit {
  epoxy_glClipPlanef(d_glClipPlanef.get(), p, eqn)
}

///|
let d_glClipPlanefIMG : Dispatch = Dispatch::new("glClipPlanefIMG")

///|
#borrow(eqn)
extern "c" fn epoxy_glClipPlanefIMG(
  fp : CPtr,
  p : UInt,
  eqn : FixedArray[Float],
) -> Unit = "epoxy_glClipPlanefIMG"

///|
pub fn gl_clip_planef_img(p : UInt, eqn : FixedArray[Float]) -> Unit {
  epoxy_glClipPlanefIMG(d_glClipPlanefIMG.get(), p, eqn)
}

///|
let d_glClipPlanefOES : Dispatch = Dispatch::new("glClipPlanefOES")

///|
#borrow(equation)
extern "c" fn epoxy_glClipPlanefOES(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Float],
) -> Unit = "epoxy_glClipPlanefOES"

///|
pub fn gl_clip_planef_oes(plane : UInt, equation : FixedArray[Float]) -> Unit {
  epoxy_glClipPlanefOES(d_glClipPlanefOES.get(), plane, equation)
}

///|
let d_glClipPlanex : Dispatch = Dispatch::new("glClipPlanex")

///|
#borrow(equation)
extern "c" fn epoxy_glClipPlanex(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Int],
) -> Unit = "epoxy_glClipPlanex"

///|
pub fn gl_clip_planex(plane : UInt, equation : FixedArray[Int]) -> Unit {
  epoxy_glClipPlanex(d_glClipPlanex.get(), plane, equation)
}

///|
let d_glClipPlanexIMG : Dispatch = Dispatch::new("glClipPlanexIMG")

///|
#borrow(eqn)
extern "c" fn epoxy_glClipPlanexIMG(
  fp : CPtr,
  p : UInt,
  eqn : FixedArray[Int],
) -> Unit = "epoxy_glClipPlanexIMG"

///|
pub fn gl_clip_planex_img(p : UInt, eqn : FixedArray[Int]) -> Unit {
  epoxy_glClipPlanexIMG(d_glClipPlanexIMG.get(), p, eqn)
}

///|
let d_glClipPlanexOES : Dispatch = Dispatch::new("glClipPlanexOES")

///|
#borrow(equation)
extern "c" fn epoxy_glClipPlanexOES(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Int],
) -> Unit = "epoxy_glClipPlanexOES"

///|
pub fn gl_clip_planex_oes(plane : UInt, equation : FixedArray[Int]) -> Unit {
  epoxy_glClipPlanexOES(d_glClipPlanexOES.get(), plane, equation)
}

///|
let d_glColor3b : Dispatch = Dispatch::new("glColor3b")

///|
extern "c" fn epoxy_glColor3b(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glColor3b"

///|
pub fn gl_color3b(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glColor3b(d_glColor3b.get(), red, green, blue)
}

///|
let d_glColor3bv : Dispatch = Dispatch::new("glColor3bv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3bv(fp : CPtr, v : Bytes) -> Unit = "epoxy_glColor3bv"

///|
pub fn gl_color3bv(v : Bytes) -> Unit {
  epoxy_glColor3bv(d_glColor3bv.get(), v)
}

///|
let d_glColor3d : Dispatch = Dispatch::new("glColor3d")

///|
extern "c" fn epoxy_glColor3d(
  fp : CPtr,
  red : Double,
  green : Double,
  blue : Double,
) -> Unit = "epoxy_glColor3d"

///|
pub fn gl_color3d(red : Double, green : Double, blue : Double) -> Unit {
  epoxy_glColor3d(d_glColor3d.get(), red, green, blue)
}

///|
let d_glColor3dv : Dispatch = Dispatch::new("glColor3dv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glColor3dv"

///|
pub fn gl_color3dv(v : FixedArray[Double]) -> Unit {
  epoxy_glColor3dv(d_glColor3dv.get(), v)
}

///|
let d_glColor3f : Dispatch = Dispatch::new("glColor3f")

///|
extern "c" fn epoxy_glColor3f(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
) -> Unit = "epoxy_glColor3f"

///|
pub fn gl_color3f(red : Float, green : Float, blue : Float) -> Unit {
  epoxy_glColor3f(d_glColor3f.get(), red, green, blue)
}

///|
let d_glColor3fVertex3fSUN : Dispatch = Dispatch::new("glColor3fVertex3fSUN")

///|
extern "c" fn epoxy_glColor3fVertex3fSUN(
  fp : CPtr,
  r : Float,
  g : Float,
  b : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glColor3fVertex3fSUN"

///|
pub fn gl_color3f_vertex3f_sun(
  r : Float,
  g : Float,
  b : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glColor3fVertex3fSUN(d_glColor3fVertex3fSUN.get(), r, g, b, x, y, z)
}

///|
let d_glColor3fVertex3fvSUN : Dispatch = Dispatch::new("glColor3fVertex3fvSUN")

///|
#borrow(c, v)
extern "c" fn epoxy_glColor3fVertex3fvSUN(
  fp : CPtr,
  c : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glColor3fVertex3fvSUN"

///|
pub fn gl_color3f_vertex3fv_sun(
  c : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glColor3fVertex3fvSUN(d_glColor3fVertex3fvSUN.get(), c, v)
}

///|
let d_glColor3fv : Dispatch = Dispatch::new("glColor3fv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glColor3fv"

///|
pub fn gl_color3fv(v : FixedArray[Float]) -> Unit {
  epoxy_glColor3fv(d_glColor3fv.get(), v)
}

///|
let d_glColor3hNV : Dispatch = Dispatch::new("glColor3hNV")

///|
extern "c" fn epoxy_glColor3hNV(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glColor3hNV"

///|
pub fn gl_color3h_nv(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glColor3hNV(d_glColor3hNV.get(), red, green, blue)
}

///|
let d_glColor3hvNV : Dispatch = Dispatch::new("glColor3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glColor3hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glColor3hvNV"

///|
pub fn gl_color3hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glColor3hvNV(d_glColor3hvNV.get(), v)
}

///|
let d_glColor3i : Dispatch = Dispatch::new("glColor3i")

///|
extern "c" fn epoxy_glColor3i(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glColor3i"

///|
pub fn gl_color3i(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glColor3i(d_glColor3i.get(), red, green, blue)
}

///|
let d_glColor3iv : Dispatch = Dispatch::new("glColor3iv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glColor3iv"

///|
pub fn gl_color3iv(v : FixedArray[Int]) -> Unit {
  epoxy_glColor3iv(d_glColor3iv.get(), v)
}

///|
let d_glColor3s : Dispatch = Dispatch::new("glColor3s")

///|
extern "c" fn epoxy_glColor3s(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glColor3s"

///|
pub fn gl_color3s(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glColor3s(d_glColor3s.get(), red, green, blue)
}

///|
let d_glColor3sv : Dispatch = Dispatch::new("glColor3sv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glColor3sv"

///|
pub fn gl_color3sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glColor3sv(d_glColor3sv.get(), v)
}

///|
let d_glColor3ub : Dispatch = Dispatch::new("glColor3ub")

///|
extern "c" fn epoxy_glColor3ub(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glColor3ub"

///|
pub fn gl_color3ub(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glColor3ub(d_glColor3ub.get(), red, green, blue)
}

///|
let d_glColor3ubv : Dispatch = Dispatch::new("glColor3ubv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3ubv(fp : CPtr, v : Bytes) -> Unit = "epoxy_glColor3ubv"

///|
pub fn gl_color3ubv(v : Bytes) -> Unit {
  epoxy_glColor3ubv(d_glColor3ubv.get(), v)
}

///|
let d_glColor3ui : Dispatch = Dispatch::new("glColor3ui")

///|
extern "c" fn epoxy_glColor3ui(
  fp : CPtr,
  red : UInt,
  green : UInt,
  blue : UInt,
) -> Unit = "epoxy_glColor3ui"

///|
pub fn gl_color3ui(red : UInt, green : UInt, blue : UInt) -> Unit {
  epoxy_glColor3ui(d_glColor3ui.get(), red, green, blue)
}

///|
let d_glColor3uiv : Dispatch = Dispatch::new("glColor3uiv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3uiv(fp : CPtr, v : FixedArray[UInt]) -> Unit = "epoxy_glColor3uiv"

///|
pub fn gl_color3uiv(v : FixedArray[UInt]) -> Unit {
  epoxy_glColor3uiv(d_glColor3uiv.get(), v)
}

///|
let d_glColor3us : Dispatch = Dispatch::new("glColor3us")

///|
extern "c" fn epoxy_glColor3us(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glColor3us"

///|
pub fn gl_color3us(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glColor3us(d_glColor3us.get(), red, green, blue)
}

///|
let d_glColor3usv : Dispatch = Dispatch::new("glColor3usv")

///|
#borrow(v)
extern "c" fn epoxy_glColor3usv(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glColor3usv"

///|
pub fn gl_color3usv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glColor3usv(d_glColor3usv.get(), v)
}

///|
let d_glColor3xOES : Dispatch = Dispatch::new("glColor3xOES")

///|
extern "c" fn epoxy_glColor3xOES(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glColor3xOES"

///|
pub fn gl_color3x_oes(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glColor3xOES(d_glColor3xOES.get(), red, green, blue)
}

///|
let d_glColor3xvOES : Dispatch = Dispatch::new("glColor3xvOES")

///|
#borrow(components)
extern "c" fn epoxy_glColor3xvOES(
  fp : CPtr,
  components : FixedArray[Int],
) -> Unit = "epoxy_glColor3xvOES"

///|
pub fn gl_color3xv_oes(components : FixedArray[Int]) -> Unit {
  epoxy_glColor3xvOES(d_glColor3xvOES.get(), components)
}

///|
let d_glColor4b : Dispatch = Dispatch::new("glColor4b")

///|
extern "c" fn epoxy_glColor4b(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4b"

///|
pub fn gl_color4b(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4b(d_glColor4b.get(), red, green, blue, alpha)
}

///|
let d_glColor4bv : Dispatch = Dispatch::new("glColor4bv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4bv(fp : CPtr, v : Bytes) -> Unit = "epoxy_glColor4bv"

///|
pub fn gl_color4bv(v : Bytes) -> Unit {
  epoxy_glColor4bv(d_glColor4bv.get(), v)
}

///|
let d_glColor4d : Dispatch = Dispatch::new("glColor4d")

///|
extern "c" fn epoxy_glColor4d(
  fp : CPtr,
  red : Double,
  green : Double,
  blue : Double,
  alpha : Double,
) -> Unit = "epoxy_glColor4d"

///|
pub fn gl_color4d(
  red : Double,
  green : Double,
  blue : Double,
  alpha : Double,
) -> Unit {
  epoxy_glColor4d(d_glColor4d.get(), red, green, blue, alpha)
}

///|
let d_glColor4dv : Dispatch = Dispatch::new("glColor4dv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glColor4dv"

///|
pub fn gl_color4dv(v : FixedArray[Double]) -> Unit {
  epoxy_glColor4dv(d_glColor4dv.get(), v)
}

///|
let d_glColor4f : Dispatch = Dispatch::new("glColor4f")

///|
extern "c" fn epoxy_glColor4f(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit = "epoxy_glColor4f"

///|
pub fn gl_color4f(
  red : Float,
  green : Float,
  blue : Float,
  alpha : Float,
) -> Unit {
  epoxy_glColor4f(d_glColor4f.get(), red, green, blue, alpha)
}

///|
let d_glColor4fNormal3fVertex3fSUN : Dispatch = Dispatch::new(
  "glColor4fNormal3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glColor4fNormal3fVertex3fSUN(
  fp : CPtr,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glColor4fNormal3fVertex3fSUN"

///|
pub fn gl_color4f_normal3f_vertex3f_sun(
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glColor4fNormal3fVertex3fSUN(
    d_glColor4fNormal3fVertex3fSUN.get(),
    r,
    g,
    b,
    a,
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glColor4fNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glColor4fNormal3fVertex3fvSUN",
)

///|
#borrow(c, n, v)
extern "c" fn epoxy_glColor4fNormal3fVertex3fvSUN(
  fp : CPtr,
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glColor4fNormal3fVertex3fvSUN"

///|
pub fn gl_color4f_normal3f_vertex3fv_sun(
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glColor4fNormal3fVertex3fvSUN(
    d_glColor4fNormal3fVertex3fvSUN.get(),
    c,
    n,
    v,
  )
}

///|
let d_glColor4fv : Dispatch = Dispatch::new("glColor4fv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glColor4fv"

///|
pub fn gl_color4fv(v : FixedArray[Float]) -> Unit {
  epoxy_glColor4fv(d_glColor4fv.get(), v)
}

///|
let d_glColor4hNV : Dispatch = Dispatch::new("glColor4hNV")

///|
extern "c" fn epoxy_glColor4hNV(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4hNV"

///|
pub fn gl_color4h_nv(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4hNV(d_glColor4hNV.get(), red, green, blue, alpha)
}

///|
let d_glColor4hvNV : Dispatch = Dispatch::new("glColor4hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glColor4hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glColor4hvNV"

///|
pub fn gl_color4hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glColor4hvNV(d_glColor4hvNV.get(), v)
}

///|
let d_glColor4i : Dispatch = Dispatch::new("glColor4i")

///|
extern "c" fn epoxy_glColor4i(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4i"

///|
pub fn gl_color4i(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4i(d_glColor4i.get(), red, green, blue, alpha)
}

///|
let d_glColor4iv : Dispatch = Dispatch::new("glColor4iv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glColor4iv"

///|
pub fn gl_color4iv(v : FixedArray[Int]) -> Unit {
  epoxy_glColor4iv(d_glColor4iv.get(), v)
}

///|
let d_glColor4s : Dispatch = Dispatch::new("glColor4s")

///|
extern "c" fn epoxy_glColor4s(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4s"

///|
pub fn gl_color4s(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4s(d_glColor4s.get(), red, green, blue, alpha)
}

///|
let d_glColor4sv : Dispatch = Dispatch::new("glColor4sv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glColor4sv"

///|
pub fn gl_color4sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glColor4sv(d_glColor4sv.get(), v)
}

///|
let d_glColor4ub : Dispatch = Dispatch::new("glColor4ub")

///|
extern "c" fn epoxy_glColor4ub(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4ub"

///|
pub fn gl_color4ub(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4ub(d_glColor4ub.get(), red, green, blue, alpha)
}

///|
let d_glColor4ubVertex2fSUN : Dispatch = Dispatch::new("glColor4ubVertex2fSUN")

///|
extern "c" fn epoxy_glColor4ubVertex2fSUN(
  fp : CPtr,
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
) -> Unit = "epoxy_glColor4ubVertex2fSUN"

///|
pub fn gl_color4ub_vertex2f_sun(
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
) -> Unit {
  epoxy_glColor4ubVertex2fSUN(d_glColor4ubVertex2fSUN.get(), r, g, b, a, x, y)
}

///|
let d_glColor4ubVertex2fvSUN : Dispatch = Dispatch::new(
  "glColor4ubVertex2fvSUN",
)

///|
#borrow(c, v)
extern "c" fn epoxy_glColor4ubVertex2fvSUN(
  fp : CPtr,
  c : Bytes,
  v : FixedArray[Float],
) -> Unit = "epoxy_glColor4ubVertex2fvSUN"

///|
pub fn gl_color4ub_vertex2fv_sun(c : Bytes, v : FixedArray[Float]) -> Unit {
  epoxy_glColor4ubVertex2fvSUN(d_glColor4ubVertex2fvSUN.get(), c, v)
}

///|
let d_glColor4ubVertex3fSUN : Dispatch = Dispatch::new("glColor4ubVertex3fSUN")

///|
extern "c" fn epoxy_glColor4ubVertex3fSUN(
  fp : CPtr,
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glColor4ubVertex3fSUN"

///|
pub fn gl_color4ub_vertex3f_sun(
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glColor4ubVertex3fSUN(
    d_glColor4ubVertex3fSUN.get(),
    r,
    g,
    b,
    a,
    x,
    y,
    z,
  )
}

///|
let d_glColor4ubVertex3fvSUN : Dispatch = Dispatch::new(
  "glColor4ubVertex3fvSUN",
)

///|
#borrow(c, v)
extern "c" fn epoxy_glColor4ubVertex3fvSUN(
  fp : CPtr,
  c : Bytes,
  v : FixedArray[Float],
) -> Unit = "epoxy_glColor4ubVertex3fvSUN"

///|
pub fn gl_color4ub_vertex3fv_sun(c : Bytes, v : FixedArray[Float]) -> Unit {
  epoxy_glColor4ubVertex3fvSUN(d_glColor4ubVertex3fvSUN.get(), c, v)
}

///|
let d_glColor4ubv : Dispatch = Dispatch::new("glColor4ubv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4ubv(fp : CPtr, v : Bytes) -> Unit = "epoxy_glColor4ubv"

///|
pub fn gl_color4ubv(v : Bytes) -> Unit {
  epoxy_glColor4ubv(d_glColor4ubv.get(), v)
}

///|
let d_glColor4ui : Dispatch = Dispatch::new("glColor4ui")

///|
extern "c" fn epoxy_glColor4ui(
  fp : CPtr,
  red : UInt,
  green : UInt,
  blue : UInt,
  alpha : UInt,
) -> Unit = "epoxy_glColor4ui"

///|
pub fn gl_color4ui(red : UInt, green : UInt, blue : UInt, alpha : UInt) -> Unit {
  epoxy_glColor4ui(d_glColor4ui.get(), red, green, blue, alpha)
}

///|
let d_glColor4uiv : Dispatch = Dispatch::new("glColor4uiv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4uiv(fp : CPtr, v : FixedArray[UInt]) -> Unit = "epoxy_glColor4uiv"

///|
pub fn gl_color4uiv(v : FixedArray[UInt]) -> Unit {
  epoxy_glColor4uiv(d_glColor4uiv.get(), v)
}

///|
let d_glColor4us : Dispatch = Dispatch::new("glColor4us")

///|
extern "c" fn epoxy_glColor4us(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4us"

///|
pub fn gl_color4us(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4us(d_glColor4us.get(), red, green, blue, alpha)
}

///|
let d_glColor4usv : Dispatch = Dispatch::new("glColor4usv")

///|
#borrow(v)
extern "c" fn epoxy_glColor4usv(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glColor4usv"

///|
pub fn gl_color4usv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glColor4usv(d_glColor4usv.get(), v)
}

///|
let d_glColor4x : Dispatch = Dispatch::new("glColor4x")

///|
extern "c" fn epoxy_glColor4x(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4x"

///|
pub fn gl_color4x(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4x(d_glColor4x.get(), red, green, blue, alpha)
}

///|
let d_glColor4xOES : Dispatch = Dispatch::new("glColor4xOES")

///|
extern "c" fn epoxy_glColor4xOES(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
  alpha : Int,
) -> Unit = "epoxy_glColor4xOES"

///|
pub fn gl_color4x_oes(red : Int, green : Int, blue : Int, alpha : Int) -> Unit {
  epoxy_glColor4xOES(d_glColor4xOES.get(), red, green, blue, alpha)
}

///|
let d_glColor4xvOES : Dispatch = Dispatch::new("glColor4xvOES")

///|
#borrow(components)
extern "c" fn epoxy_glColor4xvOES(
  fp : CPtr,
  components : FixedArray[Int],
) -> Unit = "epoxy_glColor4xvOES"

///|
pub fn gl_color4xv_oes(components : FixedArray[Int]) -> Unit {
  epoxy_glColor4xvOES(d_glColor4xvOES.get(), components)
}

///|
let d_glColorFormatNV : Dispatch = Dispatch::new("glColorFormatNV")

///|
extern "c" fn epoxy_glColorFormatNV(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glColorFormatNV"

///|
pub fn gl_color_format_nv(size : Int, type_ : UInt, stride : Int) -> Unit {
  epoxy_glColorFormatNV(d_glColorFormatNV.get(), size, type_, stride)
}

///|
let d_glColorFragmentOp1ATI : Dispatch = Dispatch::new("glColorFragmentOp1ATI")

///|
extern "c" fn epoxy_glColorFragmentOp1ATI(
  fp : CPtr,
  op : UInt,
  dst : UInt,
  dstMask : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
) -> Unit = "epoxy_glColorFragmentOp1ATI"

///|
pub fn gl_color_fragment_op1_ati(
  op : UInt,
  dst : UInt,
  dstMask : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
) -> Unit {
  epoxy_glColorFragmentOp1ATI(
    d_glColorFragmentOp1ATI.get(),
    op,
    dst,
    dstMask,
    dstMod,
    arg1,
    arg1Rep,
    arg1Mod,
  )
}

///|
let d_glColorFragmentOp2ATI : Dispatch = Dispatch::new("glColorFragmentOp2ATI")

///|
extern "c" fn epoxy_glColorFragmentOp2ATI(
  fp : CPtr,
  op : UInt,
  dst : UInt,
  dstMask : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
) -> Unit = "epoxy_glColorFragmentOp2ATI"

///|
pub fn gl_color_fragment_op2_ati(
  op : UInt,
  dst : UInt,
  dstMask : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
) -> Unit {
  epoxy_glColorFragmentOp2ATI(
    d_glColorFragmentOp2ATI.get(),
    op,
    dst,
    dstMask,
    dstMod,
    arg1,
    arg1Rep,
    arg1Mod,
    arg2,
    arg2Rep,
    arg2Mod,
  )
}

///|
let d_glColorFragmentOp3ATI : Dispatch = Dispatch::new("glColorFragmentOp3ATI")

///|
extern "c" fn epoxy_glColorFragmentOp3ATI(
  fp : CPtr,
  op : UInt,
  dst : UInt,
  dstMask : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
  arg3 : UInt,
  arg3Rep : UInt,
  arg3Mod : UInt,
) -> Unit = "epoxy_glColorFragmentOp3ATI"

///|
pub fn gl_color_fragment_op3_ati(
  op : UInt,
  dst : UInt,
  dstMask : UInt,
  dstMod : UInt,
  arg1 : UInt,
  arg1Rep : UInt,
  arg1Mod : UInt,
  arg2 : UInt,
  arg2Rep : UInt,
  arg2Mod : UInt,
  arg3 : UInt,
  arg3Rep : UInt,
  arg3Mod : UInt,
) -> Unit {
  epoxy_glColorFragmentOp3ATI(
    d_glColorFragmentOp3ATI.get(),
    op,
    dst,
    dstMask,
    dstMod,
    arg1,
    arg1Rep,
    arg1Mod,
    arg2,
    arg2Rep,
    arg2Mod,
    arg3,
    arg3Rep,
    arg3Mod,
  )
}

///|
let d_glColorMask : Dispatch = Dispatch::new("glColorMask")

///|
extern "c" fn epoxy_glColorMask(
  fp : CPtr,
  red : Bool,
  green : Bool,
  blue : Bool,
  alpha : Bool,
) -> Unit = "epoxy_glColorMask"

///|
pub fn gl_color_mask(
  red : Bool,
  green : Bool,
  blue : Bool,
  alpha : Bool,
) -> Unit {
  epoxy_glColorMask(d_glColorMask.get(), red, green, blue, alpha)
}

///|
let d_glColorMaskIndexedEXT : Dispatch = Dispatch::with_aliases(
  "glColorMaskIndexedEXT",
  ["glColorMaski", "glColorMaskiEXT", "glColorMaskiOES"],
)

///|
extern "c" fn epoxy_glColorMaskIndexedEXT(
  fp : CPtr,
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit = "epoxy_glColorMaskIndexedEXT"

///|
pub fn gl_color_mask_indexed_ext(
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit {
  epoxy_glColorMaskIndexedEXT(d_glColorMaskIndexedEXT.get(), index, r, g, b, a)
}

///|
let d_glColorMaski : Dispatch = Dispatch::with_aliases("glColorMaski", [
  "glColorMaskIndexedEXT", "glColorMaskiEXT", "glColorMaskiOES",
])

///|
extern "c" fn epoxy_glColorMaski(
  fp : CPtr,
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit = "epoxy_glColorMaski"

///|
pub fn gl_color_maski(
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit {
  epoxy_glColorMaski(d_glColorMaski.get(), index, r, g, b, a)
}

///|
let d_glColorMaskiEXT : Dispatch = Dispatch::with_aliases("glColorMaskiEXT", [
  "glColorMaskIndexedEXT", "glColorMaski", "glColorMaskiOES",
])

///|
extern "c" fn epoxy_glColorMaskiEXT(
  fp : CPtr,
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit = "epoxy_glColorMaskiEXT"

///|
pub fn gl_color_maski_ext(
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit {
  epoxy_glColorMaskiEXT(d_glColorMaskiEXT.get(), index, r, g, b, a)
}

///|
let d_glColorMaskiOES : Dispatch = Dispatch::with_aliases("glColorMaskiOES", [
  "glColorMaskIndexedEXT", "glColorMaski", "glColorMaskiEXT",
])

///|
extern "c" fn epoxy_glColorMaskiOES(
  fp : CPtr,
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit = "epoxy_glColorMaskiOES"

///|
pub fn gl_color_maski_oes(
  index : UInt,
  r : Bool,
  g : Bool,
  b : Bool,
  a : Bool,
) -> Unit {
  epoxy_glColorMaskiOES(d_glColorMaskiOES.get(), index, r, g, b, a)
}

///|
let d_glColorMaterial : Dispatch = Dispatch::new("glColorMaterial")

///|
extern "c" fn epoxy_glColorMaterial(
  fp : CPtr,
  face : UInt,
  mode : UInt,
) -> Unit = "epoxy_glColorMaterial"

///|
pub fn gl_color_material(face : UInt, mode : UInt) -> Unit {
  epoxy_glColorMaterial(d_glColorMaterial.get(), face, mode)
}

///|
let d_glColorP3ui : Dispatch = Dispatch::new("glColorP3ui")

///|
extern "c" fn epoxy_glColorP3ui(fp : CPtr, type_ : UInt, color : UInt) -> Unit = "epoxy_glColorP3ui"

///|
pub fn gl_color_p3ui(type_ : UInt, color : UInt) -> Unit {
  epoxy_glColorP3ui(d_glColorP3ui.get(), type_, color)
}

///|
let d_glColorP3uiv : Dispatch = Dispatch::new("glColorP3uiv")

///|
#borrow(color)
extern "c" fn epoxy_glColorP3uiv(
  fp : CPtr,
  type_ : UInt,
  color : FixedArray[UInt],
) -> Unit = "epoxy_glColorP3uiv"

///|
pub fn gl_color_p3uiv(type_ : UInt, color : FixedArray[UInt]) -> Unit {
  epoxy_glColorP3uiv(d_glColorP3uiv.get(), type_, color)
}

///|
let d_glColorP4ui : Dispatch = Dispatch::new("glColorP4ui")

///|
extern "c" fn epoxy_glColorP4ui(fp : CPtr, type_ : UInt, color : UInt) -> Unit = "epoxy_glColorP4ui"

///|
pub fn gl_color_p4ui(type_ : UInt, color : UInt) -> Unit {
  epoxy_glColorP4ui(d_glColorP4ui.get(), type_, color)
}

///|
let d_glColorP4uiv : Dispatch = Dispatch::new("glColorP4uiv")

///|
#borrow(color)
extern "c" fn epoxy_glColorP4uiv(
  fp : CPtr,
  type_ : UInt,
  color : FixedArray[UInt],
) -> Unit = "epoxy_glColorP4uiv"

///|
pub fn gl_color_p4uiv(type_ : UInt, color : FixedArray[UInt]) -> Unit {
  epoxy_glColorP4uiv(d_glColorP4uiv.get(), type_, color)
}

///|
let d_glColorPointer : Dispatch = Dispatch::new("glColorPointer")

///|
#borrow(pointer)
extern "c" fn epoxy_glColorPointer(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glColorPointer"

///|
pub fn gl_color_pointer(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glColorPointer(d_glColorPointer.get(), size, type_, stride, pointer)
}

///|
let d_glColorPointerEXT : Dispatch = Dispatch::new("glColorPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glColorPointerEXT(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glColorPointerEXT"

///|
pub fn gl_color_pointer_ext(
  size : Int,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glColorPointerEXT(
    d_glColorPointerEXT.get(),
    size,
    type_,
    stride,
    count,
    pointer,
  )
}

///|
let d_glColorSubTable : Dispatch = Dispatch::with_aliases("glColorSubTable", [
  "glColorSubTableEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glColorSubTable(
  fp : CPtr,
  target : UInt,
  start : Int,
  count : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glColorSubTable"

///|
pub fn gl_color_sub_table(
  target : UInt,
  start : Int,
  count : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glColorSubTable(
    d_glColorSubTable.get(),
    target,
    start,
    count,
    format,
    type_,
    data,
  )
}

///|
let d_glColorSubTableEXT : Dispatch = Dispatch::with_aliases(
  "glColorSubTableEXT",
  ["glColorSubTable"],
)

///|
#borrow(data)
extern "c" fn epoxy_glColorSubTableEXT(
  fp : CPtr,
  target : UInt,
  start : Int,
  count : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glColorSubTableEXT"

///|
pub fn gl_color_sub_table_ext(
  target : UInt,
  start : Int,
  count : Int,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glColorSubTableEXT(
    d_glColorSubTableEXT.get(),
    target,
    start,
    count,
    format,
    type_,
    data,
  )
}

///|
let d_glColorTable : Dispatch = Dispatch::with_aliases("glColorTable", [
  "glColorTableEXT", "glColorTableSGI",
])

///|
#borrow(table)
extern "c" fn epoxy_glColorTable(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit = "epoxy_glColorTable"

///|
pub fn gl_color_table(
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit {
  epoxy_glColorTable(
    d_glColorTable.get(),
    target,
    internalformat,
    width,
    format,
    type_,
    table,
  )
}

///|
let d_glColorTableEXT : Dispatch = Dispatch::with_aliases("glColorTableEXT", [
  "glColorTable", "glColorTableSGI",
])

///|
#borrow(table)
extern "c" fn epoxy_glColorTableEXT(
  fp : CPtr,
  target : UInt,
  internalFormat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit = "epoxy_glColorTableEXT"

///|
pub fn gl_color_table_ext(
  target : UInt,
  internalFormat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit {
  epoxy_glColorTableEXT(
    d_glColorTableEXT.get(),
    target,
    internalFormat,
    width,
    format,
    type_,
    table,
  )
}

///|
let d_glColorTableParameterfv : Dispatch = Dispatch::with_aliases(
  "glColorTableParameterfv",
  ["glColorTableParameterfvSGI"],
)

///|
#borrow(params)
extern "c" fn epoxy_glColorTableParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glColorTableParameterfv"

///|
pub fn gl_color_table_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glColorTableParameterfv(
    d_glColorTableParameterfv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glColorTableParameterfvSGI : Dispatch = Dispatch::with_aliases(
  "glColorTableParameterfvSGI",
  ["glColorTableParameterfv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glColorTableParameterfvSGI(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glColorTableParameterfvSGI"

///|
pub fn gl_color_table_parameterfv_sgi(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glColorTableParameterfvSGI(
    d_glColorTableParameterfvSGI.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glColorTableParameteriv : Dispatch = Dispatch::with_aliases(
  "glColorTableParameteriv",
  ["glColorTableParameterivSGI"],
)

///|
#borrow(params)
extern "c" fn epoxy_glColorTableParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glColorTableParameteriv"

///|
pub fn gl_color_table_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glColorTableParameteriv(
    d_glColorTableParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glColorTableParameterivSGI : Dispatch = Dispatch::with_aliases(
  "glColorTableParameterivSGI",
  ["glColorTableParameteriv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glColorTableParameterivSGI(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glColorTableParameterivSGI"

///|
pub fn gl_color_table_parameteriv_sgi(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glColorTableParameterivSGI(
    d_glColorTableParameterivSGI.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glColorTableSGI : Dispatch = Dispatch::with_aliases("glColorTableSGI", [
  "glColorTable", "glColorTableEXT",
])

///|
#borrow(table)
extern "c" fn epoxy_glColorTableSGI(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit = "epoxy_glColorTableSGI"

///|
pub fn gl_color_table_sgi(
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit {
  epoxy_glColorTableSGI(
    d_glColorTableSGI.get(),
    target,
    internalformat,
    width,
    format,
    type_,
    table,
  )
}

///|
let d_glCombinerInputNV : Dispatch = Dispatch::new("glCombinerInputNV")

///|
extern "c" fn epoxy_glCombinerInputNV(
  fp : CPtr,
  stage : UInt,
  portion : UInt,
  variable : UInt,
  input : UInt,
  mapping : UInt,
  componentUsage : UInt,
) -> Unit = "epoxy_glCombinerInputNV"

///|
pub fn gl_combiner_input_nv(
  stage : UInt,
  portion : UInt,
  variable : UInt,
  input : UInt,
  mapping : UInt,
  componentUsage : UInt,
) -> Unit {
  epoxy_glCombinerInputNV(
    d_glCombinerInputNV.get(),
    stage,
    portion,
    variable,
    input,
    mapping,
    componentUsage,
  )
}

///|
let d_glCombinerOutputNV : Dispatch = Dispatch::new("glCombinerOutputNV")

///|
extern "c" fn epoxy_glCombinerOutputNV(
  fp : CPtr,
  stage : UInt,
  portion : UInt,
  abOutput : UInt,
  cdOutput : UInt,
  sumOutput : UInt,
  scale : UInt,
  bias : UInt,
  abDotProduct : Bool,
  cdDotProduct : Bool,
  muxSum : Bool,
) -> Unit = "epoxy_glCombinerOutputNV"

///|
pub fn gl_combiner_output_nv(
  stage : UInt,
  portion : UInt,
  abOutput : UInt,
  cdOutput : UInt,
  sumOutput : UInt,
  scale : UInt,
  bias : UInt,
  abDotProduct : Bool,
  cdDotProduct : Bool,
  muxSum : Bool,
) -> Unit {
  epoxy_glCombinerOutputNV(
    d_glCombinerOutputNV.get(),
    stage,
    portion,
    abOutput,
    cdOutput,
    sumOutput,
    scale,
    bias,
    abDotProduct,
    cdDotProduct,
    muxSum,
  )
}

///|
let d_glCombinerParameterfNV : Dispatch = Dispatch::new(
  "glCombinerParameterfNV",
)

///|
extern "c" fn epoxy_glCombinerParameterfNV(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glCombinerParameterfNV"

///|
pub fn gl_combiner_parameterf_nv(pname : UInt, param : Float) -> Unit {
  epoxy_glCombinerParameterfNV(d_glCombinerParameterfNV.get(), pname, param)
}

///|
let d_glCombinerParameterfvNV : Dispatch = Dispatch::new(
  "glCombinerParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glCombinerParameterfvNV(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glCombinerParameterfvNV"

///|
pub fn gl_combiner_parameterfv_nv(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glCombinerParameterfvNV(d_glCombinerParameterfvNV.get(), pname, params)
}

///|
let d_glCombinerParameteriNV : Dispatch = Dispatch::new(
  "glCombinerParameteriNV",
)

///|
extern "c" fn epoxy_glCombinerParameteriNV(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glCombinerParameteriNV"

///|
pub fn gl_combiner_parameteri_nv(pname : UInt, param : Int) -> Unit {
  epoxy_glCombinerParameteriNV(d_glCombinerParameteriNV.get(), pname, param)
}

///|
let d_glCombinerParameterivNV : Dispatch = Dispatch::new(
  "glCombinerParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glCombinerParameterivNV(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glCombinerParameterivNV"

///|
pub fn gl_combiner_parameteriv_nv(
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glCombinerParameterivNV(d_glCombinerParameterivNV.get(), pname, params)
}

///|
let d_glCombinerStageParameterfvNV : Dispatch = Dispatch::new(
  "glCombinerStageParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glCombinerStageParameterfvNV(
  fp : CPtr,
  stage : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glCombinerStageParameterfvNV"

///|
pub fn gl_combiner_stage_parameterfv_nv(
  stage : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glCombinerStageParameterfvNV(
    d_glCombinerStageParameterfvNV.get(),
    stage,
    pname,
    params,
  )
}

///|
let d_glCommandListSegmentsNV : Dispatch = Dispatch::new(
  "glCommandListSegmentsNV",
)

///|
extern "c" fn epoxy_glCommandListSegmentsNV(
  fp : CPtr,
  list : UInt,
  segments : UInt,
) -> Unit = "epoxy_glCommandListSegmentsNV"

///|
pub fn gl_command_list_segments_nv(list : UInt, segments : UInt) -> Unit {
  epoxy_glCommandListSegmentsNV(d_glCommandListSegmentsNV.get(), list, segments)
}

///|
let d_glCompileCommandListNV : Dispatch = Dispatch::new(
  "glCompileCommandListNV",
)

///|
extern "c" fn epoxy_glCompileCommandListNV(fp : CPtr, list : UInt) -> Unit = "epoxy_glCompileCommandListNV"

///|
pub fn gl_compile_command_list_nv(list : UInt) -> Unit {
  epoxy_glCompileCommandListNV(d_glCompileCommandListNV.get(), list)
}

///|
let d_glCompileShader : Dispatch = Dispatch::with_aliases("glCompileShader", [
  "glCompileShaderARB",
])

///|
extern "c" fn epoxy_glCompileShader(fp : CPtr, shader : UInt) -> Unit = "epoxy_glCompileShader"

///|
pub fn gl_compile_shader(shader : UInt) -> Unit {
  epoxy_glCompileShader(d_glCompileShader.get(), shader)
}

///|
let d_glCompileShaderIncludeARB : Dispatch = Dispatch::new(
  "glCompileShaderIncludeARB",
)

///|
#borrow(path, length)
extern "c" fn epoxy_glCompileShaderIncludeARB(
  fp : CPtr,
  shader : UInt,
  count : Int,
  path : FixedArray[Bytes],
  length : FixedArray[Int],
) -> Unit = "epoxy_glCompileShaderIncludeARB"

///|
pub fn gl_compile_shader_include_arb(
  shader : UInt,
  count : Int,
  path : FixedArray[Bytes],
  length : FixedArray[Int],
) -> Unit {
  epoxy_glCompileShaderIncludeARB(
    d_glCompileShaderIncludeARB.get(),
    shader,
    count,
    path,
    length,
  )
}

///|
let d_glCompressedMultiTexImage1DEXT : Dispatch = Dispatch::new(
  "glCompressedMultiTexImage1DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedMultiTexImage1DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedMultiTexImage1DEXT"

///|
pub fn gl_compressed_multi_tex_image1_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedMultiTexImage1DEXT(
    d_glCompressedMultiTexImage1DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    width,
    border,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedMultiTexImage2DEXT : Dispatch = Dispatch::new(
  "glCompressedMultiTexImage2DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedMultiTexImage2DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedMultiTexImage2DEXT"

///|
pub fn gl_compressed_multi_tex_image2_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedMultiTexImage2DEXT(
    d_glCompressedMultiTexImage2DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    width,
    height,
    border,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedMultiTexImage3DEXT : Dispatch = Dispatch::new(
  "glCompressedMultiTexImage3DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedMultiTexImage3DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedMultiTexImage3DEXT"

///|
pub fn gl_compressed_multi_tex_image3_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedMultiTexImage3DEXT(
    d_glCompressedMultiTexImage3DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedMultiTexSubImage1DEXT : Dispatch = Dispatch::new(
  "glCompressedMultiTexSubImage1DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedMultiTexSubImage1DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedMultiTexSubImage1DEXT"

///|
pub fn gl_compressed_multi_tex_sub_image1_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedMultiTexSubImage1DEXT(
    d_glCompressedMultiTexSubImage1DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    width,
    format,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedMultiTexSubImage2DEXT : Dispatch = Dispatch::new(
  "glCompressedMultiTexSubImage2DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedMultiTexSubImage2DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedMultiTexSubImage2DEXT"

///|
pub fn gl_compressed_multi_tex_sub_image2_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedMultiTexSubImage2DEXT(
    d_glCompressedMultiTexSubImage2DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedMultiTexSubImage3DEXT : Dispatch = Dispatch::new(
  "glCompressedMultiTexSubImage3DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedMultiTexSubImage3DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedMultiTexSubImage3DEXT"

///|
pub fn gl_compressed_multi_tex_sub_image3_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedMultiTexSubImage3DEXT(
    d_glCompressedMultiTexSubImage3DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedTexImage1D : Dispatch = Dispatch::with_aliases(
  "glCompressedTexImage1D",
  ["glCompressedTexImage1DARB"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexImage1D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexImage1D"

///|
pub fn gl_compressed_tex_image1_d(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexImage1D(
    d_glCompressedTexImage1D.get(),
    target,
    level,
    internalformat,
    width,
    border,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexImage1DARB : Dispatch = Dispatch::with_aliases(
  "glCompressedTexImage1DARB",
  ["glCompressedTexImage1D"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexImage1DARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexImage1DARB"

///|
pub fn gl_compressed_tex_image1_darb(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexImage1DARB(
    d_glCompressedTexImage1DARB.get(),
    target,
    level,
    internalformat,
    width,
    border,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexImage2D : Dispatch = Dispatch::with_aliases(
  "glCompressedTexImage2D",
  ["glCompressedTexImage2DARB"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexImage2D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexImage2D"

///|
pub fn gl_compressed_tex_image2_d(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexImage2D(
    d_glCompressedTexImage2D.get(),
    target,
    level,
    internalformat,
    width,
    height,
    border,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexImage2DARB : Dispatch = Dispatch::with_aliases(
  "glCompressedTexImage2DARB",
  ["glCompressedTexImage2D"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexImage2DARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexImage2DARB"

///|
pub fn gl_compressed_tex_image2_darb(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexImage2DARB(
    d_glCompressedTexImage2DARB.get(),
    target,
    level,
    internalformat,
    width,
    height,
    border,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexImage3D : Dispatch = Dispatch::with_aliases(
  "glCompressedTexImage3D",
  ["glCompressedTexImage3DARB"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexImage3D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexImage3D"

///|
pub fn gl_compressed_tex_image3_d(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexImage3D(
    d_glCompressedTexImage3D.get(),
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexImage3DARB : Dispatch = Dispatch::with_aliases(
  "glCompressedTexImage3DARB",
  ["glCompressedTexImage3D"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexImage3DARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexImage3DARB"

///|
pub fn gl_compressed_tex_image3_darb(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexImage3DARB(
    d_glCompressedTexImage3DARB.get(),
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexImage3DOES : Dispatch = Dispatch::new(
  "glCompressedTexImage3DOES",
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexImage3DOES(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexImage3DOES"

///|
pub fn gl_compressed_tex_image3_does(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexImage3DOES(
    d_glCompressedTexImage3DOES.get(),
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexSubImage1D : Dispatch = Dispatch::with_aliases(
  "glCompressedTexSubImage1D",
  ["glCompressedTexSubImage1DARB"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexSubImage1D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexSubImage1D"

///|
pub fn gl_compressed_tex_sub_image1_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexSubImage1D(
    d_glCompressedTexSubImage1D.get(),
    target,
    level,
    xoffset,
    width,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexSubImage1DARB : Dispatch = Dispatch::with_aliases(
  "glCompressedTexSubImage1DARB",
  ["glCompressedTexSubImage1D"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexSubImage1DARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexSubImage1DARB"

///|
pub fn gl_compressed_tex_sub_image1_darb(
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexSubImage1DARB(
    d_glCompressedTexSubImage1DARB.get(),
    target,
    level,
    xoffset,
    width,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexSubImage2D : Dispatch = Dispatch::with_aliases(
  "glCompressedTexSubImage2D",
  ["glCompressedTexSubImage2DARB"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexSubImage2D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexSubImage2D"

///|
pub fn gl_compressed_tex_sub_image2_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexSubImage2D(
    d_glCompressedTexSubImage2D.get(),
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexSubImage2DARB : Dispatch = Dispatch::with_aliases(
  "glCompressedTexSubImage2DARB",
  ["glCompressedTexSubImage2D"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexSubImage2DARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexSubImage2DARB"

///|
pub fn gl_compressed_tex_sub_image2_darb(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexSubImage2DARB(
    d_glCompressedTexSubImage2DARB.get(),
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexSubImage3D : Dispatch = Dispatch::with_aliases(
  "glCompressedTexSubImage3D",
  ["glCompressedTexSubImage3DARB"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexSubImage3D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexSubImage3D"

///|
pub fn gl_compressed_tex_sub_image3_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexSubImage3D(
    d_glCompressedTexSubImage3D.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexSubImage3DARB : Dispatch = Dispatch::with_aliases(
  "glCompressedTexSubImage3DARB",
  ["glCompressedTexSubImage3D"],
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexSubImage3DARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexSubImage3DARB"

///|
pub fn gl_compressed_tex_sub_image3_darb(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexSubImage3DARB(
    d_glCompressedTexSubImage3DARB.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTexSubImage3DOES : Dispatch = Dispatch::new(
  "glCompressedTexSubImage3DOES",
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTexSubImage3DOES(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTexSubImage3DOES"

///|
pub fn gl_compressed_tex_sub_image3_does(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTexSubImage3DOES(
    d_glCompressedTexSubImage3DOES.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTextureImage1DEXT : Dispatch = Dispatch::new(
  "glCompressedTextureImage1DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedTextureImage1DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedTextureImage1DEXT"

///|
pub fn gl_compressed_texture_image1_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedTextureImage1DEXT(
    d_glCompressedTextureImage1DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    width,
    border,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedTextureImage2DEXT : Dispatch = Dispatch::new(
  "glCompressedTextureImage2DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedTextureImage2DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedTextureImage2DEXT"

///|
pub fn gl_compressed_texture_image2_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedTextureImage2DEXT(
    d_glCompressedTextureImage2DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    width,
    height,
    border,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedTextureImage3DEXT : Dispatch = Dispatch::new(
  "glCompressedTextureImage3DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedTextureImage3DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedTextureImage3DEXT"

///|
pub fn gl_compressed_texture_image3_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedTextureImage3DEXT(
    d_glCompressedTextureImage3DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedTextureSubImage1D : Dispatch = Dispatch::new(
  "glCompressedTextureSubImage1D",
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTextureSubImage1D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTextureSubImage1D"

///|
pub fn gl_compressed_texture_sub_image1_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTextureSubImage1D(
    d_glCompressedTextureSubImage1D.get(),
    texture,
    level,
    xoffset,
    width,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTextureSubImage1DEXT : Dispatch = Dispatch::new(
  "glCompressedTextureSubImage1DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedTextureSubImage1DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedTextureSubImage1DEXT"

///|
pub fn gl_compressed_texture_sub_image1_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedTextureSubImage1DEXT(
    d_glCompressedTextureSubImage1DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    width,
    format,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedTextureSubImage2D : Dispatch = Dispatch::new(
  "glCompressedTextureSubImage2D",
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTextureSubImage2D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTextureSubImage2D"

///|
pub fn gl_compressed_texture_sub_image2_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTextureSubImage2D(
    d_glCompressedTextureSubImage2D.get(),
    texture,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTextureSubImage2DEXT : Dispatch = Dispatch::new(
  "glCompressedTextureSubImage2DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedTextureSubImage2DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedTextureSubImage2DEXT"

///|
pub fn gl_compressed_texture_sub_image2_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedTextureSubImage2DEXT(
    d_glCompressedTextureSubImage2DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    imageSize,
    bits,
  )
}

///|
let d_glCompressedTextureSubImage3D : Dispatch = Dispatch::new(
  "glCompressedTextureSubImage3D",
)

///|
#borrow(data)
extern "c" fn epoxy_glCompressedTextureSubImage3D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glCompressedTextureSubImage3D"

///|
pub fn gl_compressed_texture_sub_image3_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glCompressedTextureSubImage3D(
    d_glCompressedTextureSubImage3D.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    imageSize,
    data,
  )
}

///|
let d_glCompressedTextureSubImage3DEXT : Dispatch = Dispatch::new(
  "glCompressedTextureSubImage3DEXT",
)

///|
#borrow(bits)
extern "c" fn epoxy_glCompressedTextureSubImage3DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit = "epoxy_glCompressedTextureSubImage3DEXT"

///|
pub fn gl_compressed_texture_sub_image3_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  imageSize : Int,
  bits : Bytes,
) -> Unit {
  epoxy_glCompressedTextureSubImage3DEXT(
    d_glCompressedTextureSubImage3DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    imageSize,
    bits,
  )
}

///|
let d_glConservativeRasterParameterfNV : Dispatch = Dispatch::new(
  "glConservativeRasterParameterfNV",
)

///|
extern "c" fn epoxy_glConservativeRasterParameterfNV(
  fp : CPtr,
  pname : UInt,
  value : Float,
) -> Unit = "epoxy_glConservativeRasterParameterfNV"

///|
pub fn gl_conservative_raster_parameterf_nv(
  pname : UInt,
  value : Float,
) -> Unit {
  epoxy_glConservativeRasterParameterfNV(
    d_glConservativeRasterParameterfNV.get(),
    pname,
    value,
  )
}

///|
let d_glConservativeRasterParameteriNV : Dispatch = Dispatch::new(
  "glConservativeRasterParameteriNV",
)

///|
extern "c" fn epoxy_glConservativeRasterParameteriNV(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glConservativeRasterParameteriNV"

///|
pub fn gl_conservative_raster_parameteri_nv(pname : UInt, param : Int) -> Unit {
  epoxy_glConservativeRasterParameteriNV(
    d_glConservativeRasterParameteriNV.get(),
    pname,
    param,
  )
}

///|
let d_glConvolutionFilter1D : Dispatch = Dispatch::with_aliases(
  "glConvolutionFilter1D",
  ["glConvolutionFilter1DEXT"],
)

///|
#borrow(image)
extern "c" fn epoxy_glConvolutionFilter1D(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit = "epoxy_glConvolutionFilter1D"

///|
pub fn gl_convolution_filter1_d(
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit {
  epoxy_glConvolutionFilter1D(
    d_glConvolutionFilter1D.get(),
    target,
    internalformat,
    width,
    format,
    type_,
    image,
  )
}

///|
let d_glConvolutionFilter1DEXT : Dispatch = Dispatch::with_aliases(
  "glConvolutionFilter1DEXT",
  ["glConvolutionFilter1D"],
)

///|
#borrow(image)
extern "c" fn epoxy_glConvolutionFilter1DEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit = "epoxy_glConvolutionFilter1DEXT"

///|
pub fn gl_convolution_filter1_dext(
  target : UInt,
  internalformat : UInt,
  width : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit {
  epoxy_glConvolutionFilter1DEXT(
    d_glConvolutionFilter1DEXT.get(),
    target,
    internalformat,
    width,
    format,
    type_,
    image,
  )
}

///|
let d_glConvolutionFilter2D : Dispatch = Dispatch::with_aliases(
  "glConvolutionFilter2D",
  ["glConvolutionFilter2DEXT"],
)

///|
#borrow(image)
extern "c" fn epoxy_glConvolutionFilter2D(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit = "epoxy_glConvolutionFilter2D"

///|
pub fn gl_convolution_filter2_d(
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit {
  epoxy_glConvolutionFilter2D(
    d_glConvolutionFilter2D.get(),
    target,
    internalformat,
    width,
    height,
    format,
    type_,
    image,
  )
}

///|
let d_glConvolutionFilter2DEXT : Dispatch = Dispatch::with_aliases(
  "glConvolutionFilter2DEXT",
  ["glConvolutionFilter2D"],
)

///|
#borrow(image)
extern "c" fn epoxy_glConvolutionFilter2DEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit = "epoxy_glConvolutionFilter2DEXT"

///|
pub fn gl_convolution_filter2_dext(
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit {
  epoxy_glConvolutionFilter2DEXT(
    d_glConvolutionFilter2DEXT.get(),
    target,
    internalformat,
    width,
    height,
    format,
    type_,
    image,
  )
}

///|
let d_glConvolutionParameterf : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameterf",
  ["glConvolutionParameterfEXT"],
)

///|
extern "c" fn epoxy_glConvolutionParameterf(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : Float,
) -> Unit = "epoxy_glConvolutionParameterf"

///|
pub fn gl_convolution_parameterf(
  target : UInt,
  pname : UInt,
  params : Float,
) -> Unit {
  epoxy_glConvolutionParameterf(
    d_glConvolutionParameterf.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameterfEXT : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameterfEXT",
  ["glConvolutionParameterf"],
)

///|
extern "c" fn epoxy_glConvolutionParameterfEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : Float,
) -> Unit = "epoxy_glConvolutionParameterfEXT"

///|
pub fn gl_convolution_parameterf_ext(
  target : UInt,
  pname : UInt,
  params : Float,
) -> Unit {
  epoxy_glConvolutionParameterfEXT(
    d_glConvolutionParameterfEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameterfv : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameterfv",
  ["glConvolutionParameterfvEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glConvolutionParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glConvolutionParameterfv"

///|
pub fn gl_convolution_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glConvolutionParameterfv(
    d_glConvolutionParameterfv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameterfvEXT : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameterfvEXT",
  ["glConvolutionParameterfv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glConvolutionParameterfvEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glConvolutionParameterfvEXT"

///|
pub fn gl_convolution_parameterfv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glConvolutionParameterfvEXT(
    d_glConvolutionParameterfvEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameteri : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameteri",
  ["glConvolutionParameteriEXT"],
)

///|
extern "c" fn epoxy_glConvolutionParameteri(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : Int,
) -> Unit = "epoxy_glConvolutionParameteri"

///|
pub fn gl_convolution_parameteri(
  target : UInt,
  pname : UInt,
  params : Int,
) -> Unit {
  epoxy_glConvolutionParameteri(
    d_glConvolutionParameteri.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameteriEXT : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameteriEXT",
  ["glConvolutionParameteri"],
)

///|
extern "c" fn epoxy_glConvolutionParameteriEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : Int,
) -> Unit = "epoxy_glConvolutionParameteriEXT"

///|
pub fn gl_convolution_parameteri_ext(
  target : UInt,
  pname : UInt,
  params : Int,
) -> Unit {
  epoxy_glConvolutionParameteriEXT(
    d_glConvolutionParameteriEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameteriv : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameteriv",
  ["glConvolutionParameterivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glConvolutionParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glConvolutionParameteriv"

///|
pub fn gl_convolution_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glConvolutionParameteriv(
    d_glConvolutionParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameterivEXT : Dispatch = Dispatch::with_aliases(
  "glConvolutionParameterivEXT",
  ["glConvolutionParameteriv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glConvolutionParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glConvolutionParameterivEXT"

///|
pub fn gl_convolution_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glConvolutionParameterivEXT(
    d_glConvolutionParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glConvolutionParameterxOES : Dispatch = Dispatch::new(
  "glConvolutionParameterxOES",
)

///|
extern "c" fn epoxy_glConvolutionParameterxOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glConvolutionParameterxOES"

///|
pub fn gl_convolution_parameterx_oes(
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glConvolutionParameterxOES(
    d_glConvolutionParameterxOES.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glConvolutionParameterxvOES : Dispatch = Dispatch::new(
  "glConvolutionParameterxvOES",
)

///|
#borrow(params)
extern "c" fn epoxy_glConvolutionParameterxvOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glConvolutionParameterxvOES"

///|
pub fn gl_convolution_parameterxv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glConvolutionParameterxvOES(
    d_glConvolutionParameterxvOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glCopyBufferSubData : Dispatch = Dispatch::with_aliases(
  "glCopyBufferSubData",
  ["glCopyBufferSubDataNV"],
)

///|
extern "c" fn epoxy_glCopyBufferSubData(
  fp : CPtr,
  readTarget : UInt,
  writeTarget : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit = "epoxy_glCopyBufferSubData"

///|
pub fn gl_copy_buffer_sub_data(
  readTarget : UInt,
  writeTarget : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glCopyBufferSubData(
    d_glCopyBufferSubData.get(),
    readTarget,
    writeTarget,
    readOffset,
    writeOffset,
    size,
  )
}

///|
let d_glCopyBufferSubDataNV : Dispatch = Dispatch::with_aliases(
  "glCopyBufferSubDataNV",
  ["glCopyBufferSubData"],
)

///|
extern "c" fn epoxy_glCopyBufferSubDataNV(
  fp : CPtr,
  readTarget : UInt,
  writeTarget : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit = "epoxy_glCopyBufferSubDataNV"

///|
pub fn gl_copy_buffer_sub_data_nv(
  readTarget : UInt,
  writeTarget : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glCopyBufferSubDataNV(
    d_glCopyBufferSubDataNV.get(),
    readTarget,
    writeTarget,
    readOffset,
    writeOffset,
    size,
  )
}

///|
let d_glCopyColorSubTable : Dispatch = Dispatch::with_aliases(
  "glCopyColorSubTable",
  ["glCopyColorSubTableEXT"],
)

///|
extern "c" fn epoxy_glCopyColorSubTable(
  fp : CPtr,
  target : UInt,
  start : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyColorSubTable"

///|
pub fn gl_copy_color_sub_table(
  target : UInt,
  start : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyColorSubTable(
    d_glCopyColorSubTable.get(),
    target,
    start,
    x,
    y,
    width,
  )
}

///|
let d_glCopyColorSubTableEXT : Dispatch = Dispatch::with_aliases(
  "glCopyColorSubTableEXT",
  ["glCopyColorSubTable"],
)

///|
extern "c" fn epoxy_glCopyColorSubTableEXT(
  fp : CPtr,
  target : UInt,
  start : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyColorSubTableEXT"

///|
pub fn gl_copy_color_sub_table_ext(
  target : UInt,
  start : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyColorSubTableEXT(
    d_glCopyColorSubTableEXT.get(),
    target,
    start,
    x,
    y,
    width,
  )
}

///|
let d_glCopyColorTable : Dispatch = Dispatch::with_aliases("glCopyColorTable", [
  "glCopyColorTableSGI",
])

///|
extern "c" fn epoxy_glCopyColorTable(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyColorTable"

///|
pub fn gl_copy_color_table(
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyColorTable(
    d_glCopyColorTable.get(),
    target,
    internalformat,
    x,
    y,
    width,
  )
}

///|
let d_glCopyColorTableSGI : Dispatch = Dispatch::with_aliases(
  "glCopyColorTableSGI",
  ["glCopyColorTable"],
)

///|
extern "c" fn epoxy_glCopyColorTableSGI(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyColorTableSGI"

///|
pub fn gl_copy_color_table_sgi(
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyColorTableSGI(
    d_glCopyColorTableSGI.get(),
    target,
    internalformat,
    x,
    y,
    width,
  )
}

///|
let d_glCopyConvolutionFilter1D : Dispatch = Dispatch::with_aliases(
  "glCopyConvolutionFilter1D",
  ["glCopyConvolutionFilter1DEXT"],
)

///|
extern "c" fn epoxy_glCopyConvolutionFilter1D(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyConvolutionFilter1D"

///|
pub fn gl_copy_convolution_filter1_d(
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyConvolutionFilter1D(
    d_glCopyConvolutionFilter1D.get(),
    target,
    internalformat,
    x,
    y,
    width,
  )
}

///|
let d_glCopyConvolutionFilter1DEXT : Dispatch = Dispatch::with_aliases(
  "glCopyConvolutionFilter1DEXT",
  ["glCopyConvolutionFilter1D"],
)

///|
extern "c" fn epoxy_glCopyConvolutionFilter1DEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyConvolutionFilter1DEXT"

///|
pub fn gl_copy_convolution_filter1_dext(
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyConvolutionFilter1DEXT(
    d_glCopyConvolutionFilter1DEXT.get(),
    target,
    internalformat,
    x,
    y,
    width,
  )
}

///|
let d_glCopyConvolutionFilter2D : Dispatch = Dispatch::with_aliases(
  "glCopyConvolutionFilter2D",
  ["glCopyConvolutionFilter2DEXT"],
)

///|
extern "c" fn epoxy_glCopyConvolutionFilter2D(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyConvolutionFilter2D"

///|
pub fn gl_copy_convolution_filter2_d(
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyConvolutionFilter2D(
    d_glCopyConvolutionFilter2D.get(),
    target,
    internalformat,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyConvolutionFilter2DEXT : Dispatch = Dispatch::with_aliases(
  "glCopyConvolutionFilter2DEXT",
  ["glCopyConvolutionFilter2D"],
)

///|
extern "c" fn epoxy_glCopyConvolutionFilter2DEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyConvolutionFilter2DEXT"

///|
pub fn gl_copy_convolution_filter2_dext(
  target : UInt,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyConvolutionFilter2DEXT(
    d_glCopyConvolutionFilter2DEXT.get(),
    target,
    internalformat,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyImageSubData : Dispatch = Dispatch::with_aliases(
  "glCopyImageSubData",
  ["glCopyImageSubDataEXT", "glCopyImageSubDataOES"],
)

///|
extern "c" fn epoxy_glCopyImageSubData(
  fp : CPtr,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit = "epoxy_glCopyImageSubData"

///|
pub fn gl_copy_image_sub_data(
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit {
  epoxy_glCopyImageSubData(
    d_glCopyImageSubData.get(),
    srcName,
    srcTarget,
    srcLevel,
    srcX,
    srcY,
    srcZ,
    dstName,
    dstTarget,
    dstLevel,
    dstX,
    dstY,
    dstZ,
    srcWidth,
    srcHeight,
    srcDepth,
  )
}

///|
let d_glCopyImageSubDataEXT : Dispatch = Dispatch::with_aliases(
  "glCopyImageSubDataEXT",
  ["glCopyImageSubData", "glCopyImageSubDataOES"],
)

///|
extern "c" fn epoxy_glCopyImageSubDataEXT(
  fp : CPtr,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit = "epoxy_glCopyImageSubDataEXT"

///|
pub fn gl_copy_image_sub_data_ext(
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit {
  epoxy_glCopyImageSubDataEXT(
    d_glCopyImageSubDataEXT.get(),
    srcName,
    srcTarget,
    srcLevel,
    srcX,
    srcY,
    srcZ,
    dstName,
    dstTarget,
    dstLevel,
    dstX,
    dstY,
    dstZ,
    srcWidth,
    srcHeight,
    srcDepth,
  )
}

///|
let d_glCopyImageSubDataNV : Dispatch = Dispatch::new("glCopyImageSubDataNV")

///|
extern "c" fn epoxy_glCopyImageSubDataNV(
  fp : CPtr,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit = "epoxy_glCopyImageSubDataNV"

///|
pub fn gl_copy_image_sub_data_nv(
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit {
  epoxy_glCopyImageSubDataNV(
    d_glCopyImageSubDataNV.get(),
    srcName,
    srcTarget,
    srcLevel,
    srcX,
    srcY,
    srcZ,
    dstName,
    dstTarget,
    dstLevel,
    dstX,
    dstY,
    dstZ,
    width,
    height,
    depth,
  )
}

///|
let d_glCopyImageSubDataOES : Dispatch = Dispatch::with_aliases(
  "glCopyImageSubDataOES",
  ["glCopyImageSubData", "glCopyImageSubDataEXT"],
)

///|
extern "c" fn epoxy_glCopyImageSubDataOES(
  fp : CPtr,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit = "epoxy_glCopyImageSubDataOES"

///|
pub fn gl_copy_image_sub_data_oes(
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit {
  epoxy_glCopyImageSubDataOES(
    d_glCopyImageSubDataOES.get(),
    srcName,
    srcTarget,
    srcLevel,
    srcX,
    srcY,
    srcZ,
    dstName,
    dstTarget,
    dstLevel,
    dstX,
    dstY,
    dstZ,
    srcWidth,
    srcHeight,
    srcDepth,
  )
}

///|
let d_glCopyMultiTexImage1DEXT : Dispatch = Dispatch::new(
  "glCopyMultiTexImage1DEXT",
)

///|
extern "c" fn epoxy_glCopyMultiTexImage1DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit = "epoxy_glCopyMultiTexImage1DEXT"

///|
pub fn gl_copy_multi_tex_image1_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyMultiTexImage1DEXT(
    d_glCopyMultiTexImage1DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    x,
    y,
    width,
    border,
  )
}

///|
let d_glCopyMultiTexImage2DEXT : Dispatch = Dispatch::new(
  "glCopyMultiTexImage2DEXT",
)

///|
extern "c" fn epoxy_glCopyMultiTexImage2DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit = "epoxy_glCopyMultiTexImage2DEXT"

///|
pub fn gl_copy_multi_tex_image2_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyMultiTexImage2DEXT(
    d_glCopyMultiTexImage2DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    x,
    y,
    width,
    height,
    border,
  )
}

///|
let d_glCopyMultiTexSubImage1DEXT : Dispatch = Dispatch::new(
  "glCopyMultiTexSubImage1DEXT",
)

///|
extern "c" fn epoxy_glCopyMultiTexSubImage1DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyMultiTexSubImage1DEXT"

///|
pub fn gl_copy_multi_tex_sub_image1_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyMultiTexSubImage1DEXT(
    d_glCopyMultiTexSubImage1DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    x,
    y,
    width,
  )
}

///|
let d_glCopyMultiTexSubImage2DEXT : Dispatch = Dispatch::new(
  "glCopyMultiTexSubImage2DEXT",
)

///|
extern "c" fn epoxy_glCopyMultiTexSubImage2DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyMultiTexSubImage2DEXT"

///|
pub fn gl_copy_multi_tex_sub_image2_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyMultiTexSubImage2DEXT(
    d_glCopyMultiTexSubImage2DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    yoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyMultiTexSubImage3DEXT : Dispatch = Dispatch::new(
  "glCopyMultiTexSubImage3DEXT",
)

///|
extern "c" fn epoxy_glCopyMultiTexSubImage3DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyMultiTexSubImage3DEXT"

///|
pub fn gl_copy_multi_tex_sub_image3_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyMultiTexSubImage3DEXT(
    d_glCopyMultiTexSubImage3DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyNamedBufferSubData : Dispatch = Dispatch::new(
  "glCopyNamedBufferSubData",
)

///|
extern "c" fn epoxy_glCopyNamedBufferSubData(
  fp : CPtr,
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit = "epoxy_glCopyNamedBufferSubData"

///|
pub fn gl_copy_named_buffer_sub_data(
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glCopyNamedBufferSubData(
    d_glCopyNamedBufferSubData.get(),
    readBuffer,
    writeBuffer,
    readOffset,
    writeOffset,
    size,
  )
}

///|
let d_glCopyPathNV : Dispatch = Dispatch::new("glCopyPathNV")

///|
extern "c" fn epoxy_glCopyPathNV(
  fp : CPtr,
  resultPath : UInt,
  srcPath : UInt,
) -> Unit = "epoxy_glCopyPathNV"

///|
pub fn gl_copy_path_nv(resultPath : UInt, srcPath : UInt) -> Unit {
  epoxy_glCopyPathNV(d_glCopyPathNV.get(), resultPath, srcPath)
}

///|
let d_glCopyPixels : Dispatch = Dispatch::new("glCopyPixels")

///|
extern "c" fn epoxy_glCopyPixels(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  type_ : UInt,
) -> Unit = "epoxy_glCopyPixels"

///|
pub fn gl_copy_pixels(
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  type_ : UInt,
) -> Unit {
  epoxy_glCopyPixels(d_glCopyPixels.get(), x, y, width, height, type_)
}

///|
let d_glCopyTexImage1D : Dispatch = Dispatch::with_aliases("glCopyTexImage1D", [
  "glCopyTexImage1DEXT",
])

///|
extern "c" fn epoxy_glCopyTexImage1D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit = "epoxy_glCopyTexImage1D"

///|
pub fn gl_copy_tex_image1_d(
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyTexImage1D(
    d_glCopyTexImage1D.get(),
    target,
    level,
    internalformat,
    x,
    y,
    width,
    border,
  )
}

///|
let d_glCopyTexImage1DEXT : Dispatch = Dispatch::with_aliases(
  "glCopyTexImage1DEXT",
  ["glCopyTexImage1D"],
)

///|
extern "c" fn epoxy_glCopyTexImage1DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit = "epoxy_glCopyTexImage1DEXT"

///|
pub fn gl_copy_tex_image1_dext(
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyTexImage1DEXT(
    d_glCopyTexImage1DEXT.get(),
    target,
    level,
    internalformat,
    x,
    y,
    width,
    border,
  )
}

///|
let d_glCopyTexImage2D : Dispatch = Dispatch::with_aliases("glCopyTexImage2D", [
  "glCopyTexImage2DEXT",
])

///|
extern "c" fn epoxy_glCopyTexImage2D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit = "epoxy_glCopyTexImage2D"

///|
pub fn gl_copy_tex_image2_d(
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyTexImage2D(
    d_glCopyTexImage2D.get(),
    target,
    level,
    internalformat,
    x,
    y,
    width,
    height,
    border,
  )
}

///|
let d_glCopyTexImage2DEXT : Dispatch = Dispatch::with_aliases(
  "glCopyTexImage2DEXT",
  ["glCopyTexImage2D"],
)

///|
extern "c" fn epoxy_glCopyTexImage2DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit = "epoxy_glCopyTexImage2DEXT"

///|
pub fn gl_copy_tex_image2_dext(
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyTexImage2DEXT(
    d_glCopyTexImage2DEXT.get(),
    target,
    level,
    internalformat,
    x,
    y,
    width,
    height,
    border,
  )
}

///|
let d_glCopyTexSubImage1D : Dispatch = Dispatch::with_aliases(
  "glCopyTexSubImage1D",
  ["glCopyTexSubImage1DEXT"],
)

///|
extern "c" fn epoxy_glCopyTexSubImage1D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyTexSubImage1D"

///|
pub fn gl_copy_tex_sub_image1_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyTexSubImage1D(
    d_glCopyTexSubImage1D.get(),
    target,
    level,
    xoffset,
    x,
    y,
    width,
  )
}

///|
let d_glCopyTexSubImage1DEXT : Dispatch = Dispatch::with_aliases(
  "glCopyTexSubImage1DEXT",
  ["glCopyTexSubImage1D"],
)

///|
extern "c" fn epoxy_glCopyTexSubImage1DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyTexSubImage1DEXT"

///|
pub fn gl_copy_tex_sub_image1_dext(
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyTexSubImage1DEXT(
    d_glCopyTexSubImage1DEXT.get(),
    target,
    level,
    xoffset,
    x,
    y,
    width,
  )
}

///|
let d_glCopyTexSubImage2D : Dispatch = Dispatch::with_aliases(
  "glCopyTexSubImage2D",
  ["glCopyTexSubImage2DEXT"],
)

///|
extern "c" fn epoxy_glCopyTexSubImage2D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTexSubImage2D"

///|
pub fn gl_copy_tex_sub_image2_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTexSubImage2D(
    d_glCopyTexSubImage2D.get(),
    target,
    level,
    xoffset,
    yoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTexSubImage2DEXT : Dispatch = Dispatch::with_aliases(
  "glCopyTexSubImage2DEXT",
  ["glCopyTexSubImage2D"],
)

///|
extern "c" fn epoxy_glCopyTexSubImage2DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTexSubImage2DEXT"

///|
pub fn gl_copy_tex_sub_image2_dext(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTexSubImage2DEXT(
    d_glCopyTexSubImage2DEXT.get(),
    target,
    level,
    xoffset,
    yoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTexSubImage3D : Dispatch = Dispatch::with_aliases(
  "glCopyTexSubImage3D",
  ["glCopyTexSubImage3DEXT"],
)

///|
extern "c" fn epoxy_glCopyTexSubImage3D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTexSubImage3D"

///|
pub fn gl_copy_tex_sub_image3_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTexSubImage3D(
    d_glCopyTexSubImage3D.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTexSubImage3DEXT : Dispatch = Dispatch::with_aliases(
  "glCopyTexSubImage3DEXT",
  ["glCopyTexSubImage3D"],
)

///|
extern "c" fn epoxy_glCopyTexSubImage3DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTexSubImage3DEXT"

///|
pub fn gl_copy_tex_sub_image3_dext(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTexSubImage3DEXT(
    d_glCopyTexSubImage3DEXT.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTexSubImage3DOES : Dispatch = Dispatch::new(
  "glCopyTexSubImage3DOES",
)

///|
extern "c" fn epoxy_glCopyTexSubImage3DOES(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTexSubImage3DOES"

///|
pub fn gl_copy_tex_sub_image3_does(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTexSubImage3DOES(
    d_glCopyTexSubImage3DOES.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTextureImage1DEXT : Dispatch = Dispatch::new(
  "glCopyTextureImage1DEXT",
)

///|
extern "c" fn epoxy_glCopyTextureImage1DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit = "epoxy_glCopyTextureImage1DEXT"

///|
pub fn gl_copy_texture_image1_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyTextureImage1DEXT(
    d_glCopyTextureImage1DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    x,
    y,
    width,
    border,
  )
}

///|
let d_glCopyTextureImage2DEXT : Dispatch = Dispatch::new(
  "glCopyTextureImage2DEXT",
)

///|
extern "c" fn epoxy_glCopyTextureImage2DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit = "epoxy_glCopyTextureImage2DEXT"

///|
pub fn gl_copy_texture_image2_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : UInt,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  border : Int,
) -> Unit {
  epoxy_glCopyTextureImage2DEXT(
    d_glCopyTextureImage2DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    x,
    y,
    width,
    height,
    border,
  )
}

///|
let d_glCopyTextureLevelsAPPLE : Dispatch = Dispatch::new(
  "glCopyTextureLevelsAPPLE",
)

///|
extern "c" fn epoxy_glCopyTextureLevelsAPPLE(
  fp : CPtr,
  destinationTexture : UInt,
  sourceTexture : UInt,
  sourceBaseLevel : Int,
  sourceLevelCount : Int,
) -> Unit = "epoxy_glCopyTextureLevelsAPPLE"

///|
pub fn gl_copy_texture_levels_apple(
  destinationTexture : UInt,
  sourceTexture : UInt,
  sourceBaseLevel : Int,
  sourceLevelCount : Int,
) -> Unit {
  epoxy_glCopyTextureLevelsAPPLE(
    d_glCopyTextureLevelsAPPLE.get(),
    destinationTexture,
    sourceTexture,
    sourceBaseLevel,
    sourceLevelCount,
  )
}

///|
let d_glCopyTextureSubImage1D : Dispatch = Dispatch::new(
  "glCopyTextureSubImage1D",
)

///|
extern "c" fn epoxy_glCopyTextureSubImage1D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyTextureSubImage1D"

///|
pub fn gl_copy_texture_sub_image1_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyTextureSubImage1D(
    d_glCopyTextureSubImage1D.get(),
    texture,
    level,
    xoffset,
    x,
    y,
    width,
  )
}

///|
let d_glCopyTextureSubImage1DEXT : Dispatch = Dispatch::new(
  "glCopyTextureSubImage1DEXT",
)

///|
extern "c" fn epoxy_glCopyTextureSubImage1DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit = "epoxy_glCopyTextureSubImage1DEXT"

///|
pub fn gl_copy_texture_sub_image1_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  x : Int,
  y : Int,
  width : Int,
) -> Unit {
  epoxy_glCopyTextureSubImage1DEXT(
    d_glCopyTextureSubImage1DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    x,
    y,
    width,
  )
}

///|
let d_glCopyTextureSubImage2D : Dispatch = Dispatch::new(
  "glCopyTextureSubImage2D",
)

///|
extern "c" fn epoxy_glCopyTextureSubImage2D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTextureSubImage2D"

///|
pub fn gl_copy_texture_sub_image2_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTextureSubImage2D(
    d_glCopyTextureSubImage2D.get(),
    texture,
    level,
    xoffset,
    yoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTextureSubImage2DEXT : Dispatch = Dispatch::new(
  "glCopyTextureSubImage2DEXT",
)

///|
extern "c" fn epoxy_glCopyTextureSubImage2DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTextureSubImage2DEXT"

///|
pub fn gl_copy_texture_sub_image2_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTextureSubImage2DEXT(
    d_glCopyTextureSubImage2DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    yoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTextureSubImage3D : Dispatch = Dispatch::new(
  "glCopyTextureSubImage3D",
)

///|
extern "c" fn epoxy_glCopyTextureSubImage3D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTextureSubImage3D"

///|
pub fn gl_copy_texture_sub_image3_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTextureSubImage3D(
    d_glCopyTextureSubImage3D.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCopyTextureSubImage3DEXT : Dispatch = Dispatch::new(
  "glCopyTextureSubImage3DEXT",
)

///|
extern "c" fn epoxy_glCopyTextureSubImage3DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glCopyTextureSubImage3DEXT"

///|
pub fn gl_copy_texture_sub_image3_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glCopyTextureSubImage3DEXT(
    d_glCopyTextureSubImage3DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glCoverFillPathInstancedNV : Dispatch = Dispatch::new(
  "glCoverFillPathInstancedNV",
)

///|
#borrow(paths, transformValues)
extern "c" fn epoxy_glCoverFillPathInstancedNV(
  fp : CPtr,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit = "epoxy_glCoverFillPathInstancedNV"

///|
pub fn gl_cover_fill_path_instanced_nv(
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit {
  epoxy_glCoverFillPathInstancedNV(
    d_glCoverFillPathInstancedNV.get(),
    numPaths,
    pathNameType,
    paths,
    pathBase,
    coverMode,
    transformType,
    transformValues,
  )
}

///|
let d_glCoverFillPathNV : Dispatch = Dispatch::new("glCoverFillPathNV")

///|
extern "c" fn epoxy_glCoverFillPathNV(
  fp : CPtr,
  path : UInt,
  coverMode : UInt,
) -> Unit = "epoxy_glCoverFillPathNV"

///|
pub fn gl_cover_fill_path_nv(path : UInt, coverMode : UInt) -> Unit {
  epoxy_glCoverFillPathNV(d_glCoverFillPathNV.get(), path, coverMode)
}

///|
let d_glCoverStrokePathInstancedNV : Dispatch = Dispatch::new(
  "glCoverStrokePathInstancedNV",
)

///|
#borrow(paths, transformValues)
extern "c" fn epoxy_glCoverStrokePathInstancedNV(
  fp : CPtr,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit = "epoxy_glCoverStrokePathInstancedNV"

///|
pub fn gl_cover_stroke_path_instanced_nv(
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit {
  epoxy_glCoverStrokePathInstancedNV(
    d_glCoverStrokePathInstancedNV.get(),
    numPaths,
    pathNameType,
    paths,
    pathBase,
    coverMode,
    transformType,
    transformValues,
  )
}

///|
let d_glCoverStrokePathNV : Dispatch = Dispatch::new("glCoverStrokePathNV")

///|
extern "c" fn epoxy_glCoverStrokePathNV(
  fp : CPtr,
  path : UInt,
  coverMode : UInt,
) -> Unit = "epoxy_glCoverStrokePathNV"

///|
pub fn gl_cover_stroke_path_nv(path : UInt, coverMode : UInt) -> Unit {
  epoxy_glCoverStrokePathNV(d_glCoverStrokePathNV.get(), path, coverMode)
}

///|
let d_glCoverageMaskNV : Dispatch = Dispatch::new("glCoverageMaskNV")

///|
extern "c" fn epoxy_glCoverageMaskNV(fp : CPtr, mask : Bool) -> Unit = "epoxy_glCoverageMaskNV"

///|
pub fn gl_coverage_mask_nv(mask : Bool) -> Unit {
  epoxy_glCoverageMaskNV(d_glCoverageMaskNV.get(), mask)
}

///|
let d_glCoverageModulationNV : Dispatch = Dispatch::new(
  "glCoverageModulationNV",
)

///|
extern "c" fn epoxy_glCoverageModulationNV(
  fp : CPtr,
  components : UInt,
) -> Unit = "epoxy_glCoverageModulationNV"

///|
pub fn gl_coverage_modulation_nv(components : UInt) -> Unit {
  epoxy_glCoverageModulationNV(d_glCoverageModulationNV.get(), components)
}

///|
let d_glCoverageModulationTableNV : Dispatch = Dispatch::new(
  "glCoverageModulationTableNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glCoverageModulationTableNV(
  fp : CPtr,
  n : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glCoverageModulationTableNV"

///|
pub fn gl_coverage_modulation_table_nv(n : Int, v : FixedArray[Float]) -> Unit {
  epoxy_glCoverageModulationTableNV(d_glCoverageModulationTableNV.get(), n, v)
}

///|
let d_glCoverageOperationNV : Dispatch = Dispatch::new("glCoverageOperationNV")

///|
extern "c" fn epoxy_glCoverageOperationNV(fp : CPtr, operation : UInt) -> Unit = "epoxy_glCoverageOperationNV"

///|
pub fn gl_coverage_operation_nv(operation : UInt) -> Unit {
  epoxy_glCoverageOperationNV(d_glCoverageOperationNV.get(), operation)
}

///|
let d_glCreateBuffers : Dispatch = Dispatch::new("glCreateBuffers")

///|
#borrow(buffers)
extern "c" fn epoxy_glCreateBuffers(
  fp : CPtr,
  n : Int,
  buffers : FixedArray[UInt],
) -> Unit = "epoxy_glCreateBuffers"

///|
pub fn gl_create_buffers(n : Int, buffers : FixedArray[UInt]) -> Unit {
  epoxy_glCreateBuffers(d_glCreateBuffers.get(), n, buffers)
}

///|
let d_glCreateCommandListsNV : Dispatch = Dispatch::new(
  "glCreateCommandListsNV",
)

///|
#borrow(lists)
extern "c" fn epoxy_glCreateCommandListsNV(
  fp : CPtr,
  n : Int,
  lists : FixedArray[UInt],
) -> Unit = "epoxy_glCreateCommandListsNV"

///|
pub fn gl_create_command_lists_nv(n : Int, lists : FixedArray[UInt]) -> Unit {
  epoxy_glCreateCommandListsNV(d_glCreateCommandListsNV.get(), n, lists)
}

///|
let d_glCreateFramebuffers : Dispatch = Dispatch::new("glCreateFramebuffers")

///|
#borrow(framebuffers)
extern "c" fn epoxy_glCreateFramebuffers(
  fp : CPtr,
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit = "epoxy_glCreateFramebuffers"

///|
pub fn gl_create_framebuffers(n : Int, framebuffers : FixedArray[UInt]) -> Unit {
  epoxy_glCreateFramebuffers(d_glCreateFramebuffers.get(), n, framebuffers)
}

///|
let d_glCreateMemoryObjectsEXT : Dispatch = Dispatch::new(
  "glCreateMemoryObjectsEXT",
)

///|
#borrow(memoryObjects)
extern "c" fn epoxy_glCreateMemoryObjectsEXT(
  fp : CPtr,
  n : Int,
  memoryObjects : FixedArray[UInt],
) -> Unit = "epoxy_glCreateMemoryObjectsEXT"

///|
pub fn gl_create_memory_objects_ext(
  n : Int,
  memoryObjects : FixedArray[UInt],
) -> Unit {
  epoxy_glCreateMemoryObjectsEXT(
    d_glCreateMemoryObjectsEXT.get(),
    n,
    memoryObjects,
  )
}

///|
let d_glCreatePerfQueryINTEL : Dispatch = Dispatch::new(
  "glCreatePerfQueryINTEL",
)

///|
#borrow(queryHandle)
extern "c" fn epoxy_glCreatePerfQueryINTEL(
  fp : CPtr,
  queryId : UInt,
  queryHandle : FixedArray[UInt],
) -> Unit = "epoxy_glCreatePerfQueryINTEL"

///|
pub fn gl_create_perf_query_intel(
  queryId : UInt,
  queryHandle : FixedArray[UInt],
) -> Unit {
  epoxy_glCreatePerfQueryINTEL(
    d_glCreatePerfQueryINTEL.get(),
    queryId,
    queryHandle,
  )
}

///|
let d_glCreateProgram : Dispatch = Dispatch::with_aliases("glCreateProgram", [
  "glCreateProgramObjectARB",
])

///|
extern "c" fn epoxy_glCreateProgram(fp : CPtr) -> UInt = "epoxy_glCreateProgram"

///|
pub fn gl_create_program() -> UInt {
  epoxy_glCreateProgram(d_glCreateProgram.get())
}

///|
let d_glCreateProgramPipelines : Dispatch = Dispatch::new(
  "glCreateProgramPipelines",
)

///|
#borrow(pipelines)
extern "c" fn epoxy_glCreateProgramPipelines(
  fp : CPtr,
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit = "epoxy_glCreateProgramPipelines"

///|
pub fn gl_create_program_pipelines(
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit {
  epoxy_glCreateProgramPipelines(d_glCreateProgramPipelines.get(), n, pipelines)
}

///|
let d_glCreateProgressFenceNVX : Dispatch = Dispatch::new(
  "glCreateProgressFenceNVX",
)

///|
extern "c" fn epoxy_glCreateProgressFenceNVX(fp : CPtr) -> UInt = "epoxy_glCreateProgressFenceNVX"

///|
pub fn gl_create_progress_fence_nvx() -> UInt {
  epoxy_glCreateProgressFenceNVX(d_glCreateProgressFenceNVX.get())
}

///|
let d_glCreateQueries : Dispatch = Dispatch::new("glCreateQueries")

///|
#borrow(ids)
extern "c" fn epoxy_glCreateQueries(
  fp : CPtr,
  target : UInt,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glCreateQueries"

///|
pub fn gl_create_queries(
  target : UInt,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit {
  epoxy_glCreateQueries(d_glCreateQueries.get(), target, n, ids)
}

///|
let d_glCreateRenderbuffers : Dispatch = Dispatch::new("glCreateRenderbuffers")

///|
#borrow(renderbuffers)
extern "c" fn epoxy_glCreateRenderbuffers(
  fp : CPtr,
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit = "epoxy_glCreateRenderbuffers"

///|
pub fn gl_create_renderbuffers(
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glCreateRenderbuffers(d_glCreateRenderbuffers.get(), n, renderbuffers)
}

///|
let d_glCreateSamplers : Dispatch = Dispatch::new("glCreateSamplers")

///|
#borrow(samplers)
extern "c" fn epoxy_glCreateSamplers(
  fp : CPtr,
  n : Int,
  samplers : FixedArray[UInt],
) -> Unit = "epoxy_glCreateSamplers"

///|
pub fn gl_create_samplers(n : Int, samplers : FixedArray[UInt]) -> Unit {
  epoxy_glCreateSamplers(d_glCreateSamplers.get(), n, samplers)
}

///|
let d_glCreateSemaphoresNV : Dispatch = Dispatch::new("glCreateSemaphoresNV")

///|
#borrow(semaphores)
extern "c" fn epoxy_glCreateSemaphoresNV(
  fp : CPtr,
  n : Int,
  semaphores : FixedArray[UInt],
) -> Unit = "epoxy_glCreateSemaphoresNV"

///|
pub fn gl_create_semaphores_nv(n : Int, semaphores : FixedArray[UInt]) -> Unit {
  epoxy_glCreateSemaphoresNV(d_glCreateSemaphoresNV.get(), n, semaphores)
}

///|
let d_glCreateShader : Dispatch = Dispatch::with_aliases("glCreateShader", [
  "glCreateShaderObjectARB",
])

///|
extern "c" fn epoxy_glCreateShader(fp : CPtr, type_ : UInt) -> UInt = "epoxy_glCreateShader"

///|
pub fn gl_create_shader(type_ : UInt) -> UInt {
  epoxy_glCreateShader(d_glCreateShader.get(), type_)
}

///|
let d_glCreateShaderProgramEXT : Dispatch = Dispatch::new(
  "glCreateShaderProgramEXT",
)

///|
#borrow(string)
extern "c" fn epoxy_glCreateShaderProgramEXT(
  fp : CPtr,
  type_ : UInt,
  string : Bytes,
) -> UInt = "epoxy_glCreateShaderProgramEXT"

///|
pub fn gl_create_shader_program_ext(type_ : UInt, string : Bytes) -> UInt {
  epoxy_glCreateShaderProgramEXT(
    d_glCreateShaderProgramEXT.get(),
    type_,
    string,
  )
}

///|
let d_glCreateShaderProgramv : Dispatch = Dispatch::new(
  "glCreateShaderProgramv",
)

///|
#borrow(strings)
extern "c" fn epoxy_glCreateShaderProgramv(
  fp : CPtr,
  type_ : UInt,
  count : Int,
  strings : FixedArray[Bytes],
) -> UInt = "epoxy_glCreateShaderProgramv"

///|
pub fn gl_create_shader_programv(
  type_ : UInt,
  count : Int,
  strings : FixedArray[Bytes],
) -> UInt {
  epoxy_glCreateShaderProgramv(
    d_glCreateShaderProgramv.get(),
    type_,
    count,
    strings,
  )
}

///|
let d_glCreateShaderProgramvEXT : Dispatch = Dispatch::new(
  "glCreateShaderProgramvEXT",
)

///|
#borrow(strings)
extern "c" fn epoxy_glCreateShaderProgramvEXT(
  fp : CPtr,
  type_ : UInt,
  count : Int,
  strings : FixedArray[Bytes],
) -> UInt = "epoxy_glCreateShaderProgramvEXT"

///|
pub fn gl_create_shader_programv_ext(
  type_ : UInt,
  count : Int,
  strings : FixedArray[Bytes],
) -> UInt {
  epoxy_glCreateShaderProgramvEXT(
    d_glCreateShaderProgramvEXT.get(),
    type_,
    count,
    strings,
  )
}

///|
let d_glCreateStatesNV : Dispatch = Dispatch::new("glCreateStatesNV")

///|
#borrow(states)
extern "c" fn epoxy_glCreateStatesNV(
  fp : CPtr,
  n : Int,
  states : FixedArray[UInt],
) -> Unit = "epoxy_glCreateStatesNV"

///|
pub fn gl_create_states_nv(n : Int, states : FixedArray[UInt]) -> Unit {
  epoxy_glCreateStatesNV(d_glCreateStatesNV.get(), n, states)
}

///|
let d_glCreateTextures : Dispatch = Dispatch::new("glCreateTextures")

///|
#borrow(textures)
extern "c" fn epoxy_glCreateTextures(
  fp : CPtr,
  target : UInt,
  n : Int,
  textures : FixedArray[UInt],
) -> Unit = "epoxy_glCreateTextures"

///|
pub fn gl_create_textures(
  target : UInt,
  n : Int,
  textures : FixedArray[UInt],
) -> Unit {
  epoxy_glCreateTextures(d_glCreateTextures.get(), target, n, textures)
}

///|
let d_glCreateTransformFeedbacks : Dispatch = Dispatch::new(
  "glCreateTransformFeedbacks",
)

///|
#borrow(ids)
extern "c" fn epoxy_glCreateTransformFeedbacks(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glCreateTransformFeedbacks"

///|
pub fn gl_create_transform_feedbacks(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glCreateTransformFeedbacks(d_glCreateTransformFeedbacks.get(), n, ids)
}

///|
let d_glCreateVertexArrays : Dispatch = Dispatch::new("glCreateVertexArrays")

///|
#borrow(arrays)
extern "c" fn epoxy_glCreateVertexArrays(
  fp : CPtr,
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit = "epoxy_glCreateVertexArrays"

///|
pub fn gl_create_vertex_arrays(n : Int, arrays : FixedArray[UInt]) -> Unit {
  epoxy_glCreateVertexArrays(d_glCreateVertexArrays.get(), n, arrays)
}

///|
let d_glCullFace : Dispatch = Dispatch::new("glCullFace")

///|
extern "c" fn epoxy_glCullFace(fp : CPtr, mode : UInt) -> Unit = "epoxy_glCullFace"

///|
pub fn gl_cull_face(mode : UInt) -> Unit {
  epoxy_glCullFace(d_glCullFace.get(), mode)
}

///|
let d_glCullParameterdvEXT : Dispatch = Dispatch::new("glCullParameterdvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glCullParameterdvEXT(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glCullParameterdvEXT"

///|
pub fn gl_cull_parameterdv_ext(
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glCullParameterdvEXT(d_glCullParameterdvEXT.get(), pname, params)
}

///|
let d_glCullParameterfvEXT : Dispatch = Dispatch::new("glCullParameterfvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glCullParameterfvEXT(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glCullParameterfvEXT"

///|
pub fn gl_cull_parameterfv_ext(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glCullParameterfvEXT(d_glCullParameterfvEXT.get(), pname, params)
}

///|
let d_glCurrentPaletteMatrixARB : Dispatch = Dispatch::new(
  "glCurrentPaletteMatrixARB",
)

///|
extern "c" fn epoxy_glCurrentPaletteMatrixARB(fp : CPtr, index : Int) -> Unit = "epoxy_glCurrentPaletteMatrixARB"

///|
pub fn gl_current_palette_matrix_arb(index : Int) -> Unit {
  epoxy_glCurrentPaletteMatrixARB(d_glCurrentPaletteMatrixARB.get(), index)
}

///|
let d_glCurrentPaletteMatrixOES : Dispatch = Dispatch::new(
  "glCurrentPaletteMatrixOES",
)

///|
extern "c" fn epoxy_glCurrentPaletteMatrixOES(
  fp : CPtr,
  matrixpaletteindex : UInt,
) -> Unit = "epoxy_glCurrentPaletteMatrixOES"

///|
pub fn gl_current_palette_matrix_oes(matrixpaletteindex : UInt) -> Unit {
  epoxy_glCurrentPaletteMatrixOES(
    d_glCurrentPaletteMatrixOES.get(),
    matrixpaletteindex,
  )
}

///|
let d_glDebugMessageControl : Dispatch = Dispatch::with_aliases(
  "glDebugMessageControl",
  ["glDebugMessageControlARB", "glDebugMessageControlKHR"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glDebugMessageControl(
  fp : CPtr,
  source : UInt,
  type_ : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit = "epoxy_glDebugMessageControl"

///|
pub fn gl_debug_message_control(
  source : UInt,
  type_ : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit {
  epoxy_glDebugMessageControl(
    d_glDebugMessageControl.get(),
    source,
    type_,
    severity,
    count,
    ids,
    enabled,
  )
}

///|
let d_glDebugMessageControlARB : Dispatch = Dispatch::with_aliases(
  "glDebugMessageControlARB",
  ["glDebugMessageControl", "glDebugMessageControlKHR"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glDebugMessageControlARB(
  fp : CPtr,
  source : UInt,
  type_ : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit = "epoxy_glDebugMessageControlARB"

///|
pub fn gl_debug_message_control_arb(
  source : UInt,
  type_ : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit {
  epoxy_glDebugMessageControlARB(
    d_glDebugMessageControlARB.get(),
    source,
    type_,
    severity,
    count,
    ids,
    enabled,
  )
}

///|
let d_glDebugMessageControlKHR : Dispatch = Dispatch::with_aliases(
  "glDebugMessageControlKHR",
  ["glDebugMessageControl", "glDebugMessageControlARB"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glDebugMessageControlKHR(
  fp : CPtr,
  source : UInt,
  type_ : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit = "epoxy_glDebugMessageControlKHR"

///|
pub fn gl_debug_message_control_khr(
  source : UInt,
  type_ : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit {
  epoxy_glDebugMessageControlKHR(
    d_glDebugMessageControlKHR.get(),
    source,
    type_,
    severity,
    count,
    ids,
    enabled,
  )
}

///|
let d_glDebugMessageEnableAMD : Dispatch = Dispatch::new(
  "glDebugMessageEnableAMD",
)

///|
#borrow(ids)
extern "c" fn epoxy_glDebugMessageEnableAMD(
  fp : CPtr,
  category : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit = "epoxy_glDebugMessageEnableAMD"

///|
pub fn gl_debug_message_enable_amd(
  category : UInt,
  severity : UInt,
  count : Int,
  ids : FixedArray[UInt],
  enabled : Bool,
) -> Unit {
  epoxy_glDebugMessageEnableAMD(
    d_glDebugMessageEnableAMD.get(),
    category,
    severity,
    count,
    ids,
    enabled,
  )
}

///|
let d_glDebugMessageInsert : Dispatch = Dispatch::with_aliases(
  "glDebugMessageInsert",
  ["glDebugMessageInsertARB", "glDebugMessageInsertKHR"],
)

///|
#borrow(buf)
extern "c" fn epoxy_glDebugMessageInsert(
  fp : CPtr,
  source : UInt,
  type_ : UInt,
  id : UInt,
  severity : UInt,
  length : Int,
  buf : Bytes,
) -> Unit = "epoxy_glDebugMessageInsert"

///|
pub fn gl_debug_message_insert(
  source : UInt,
  type_ : UInt,
  id : UInt,
  severity : UInt,
  length : Int,
  buf : Bytes,
) -> Unit {
  epoxy_glDebugMessageInsert(
    d_glDebugMessageInsert.get(),
    source,
    type_,
    id,
    severity,
    length,
    buf,
  )
}

///|
let d_glDebugMessageInsertAMD : Dispatch = Dispatch::new(
  "glDebugMessageInsertAMD",
)

///|
#borrow(buf)
extern "c" fn epoxy_glDebugMessageInsertAMD(
  fp : CPtr,
  category : UInt,
  severity : UInt,
  id : UInt,
  length : Int,
  buf : Bytes,
) -> Unit = "epoxy_glDebugMessageInsertAMD"

///|
pub fn gl_debug_message_insert_amd(
  category : UInt,
  severity : UInt,
  id : UInt,
  length : Int,
  buf : Bytes,
) -> Unit {
  epoxy_glDebugMessageInsertAMD(
    d_glDebugMessageInsertAMD.get(),
    category,
    severity,
    id,
    length,
    buf,
  )
}

///|
let d_glDebugMessageInsertARB : Dispatch = Dispatch::with_aliases(
  "glDebugMessageInsertARB",
  ["glDebugMessageInsert", "glDebugMessageInsertKHR"],
)

///|
#borrow(buf)
extern "c" fn epoxy_glDebugMessageInsertARB(
  fp : CPtr,
  source : UInt,
  type_ : UInt,
  id : UInt,
  severity : UInt,
  length : Int,
  buf : Bytes,
) -> Unit = "epoxy_glDebugMessageInsertARB"

///|
pub fn gl_debug_message_insert_arb(
  source : UInt,
  type_ : UInt,
  id : UInt,
  severity : UInt,
  length : Int,
  buf : Bytes,
) -> Unit {
  epoxy_glDebugMessageInsertARB(
    d_glDebugMessageInsertARB.get(),
    source,
    type_,
    id,
    severity,
    length,
    buf,
  )
}

///|
let d_glDebugMessageInsertKHR : Dispatch = Dispatch::with_aliases(
  "glDebugMessageInsertKHR",
  ["glDebugMessageInsert", "glDebugMessageInsertARB"],
)

///|
#borrow(buf)
extern "c" fn epoxy_glDebugMessageInsertKHR(
  fp : CPtr,
  source : UInt,
  type_ : UInt,
  id : UInt,
  severity : UInt,
  length : Int,
  buf : Bytes,
) -> Unit = "epoxy_glDebugMessageInsertKHR"

///|
pub fn gl_debug_message_insert_khr(
  source : UInt,
  type_ : UInt,
  id : UInt,
  severity : UInt,
  length : Int,
  buf : Bytes,
) -> Unit {
  epoxy_glDebugMessageInsertKHR(
    d_glDebugMessageInsertKHR.get(),
    source,
    type_,
    id,
    severity,
    length,
    buf,
  )
}

///|
let d_glDeformSGIX : Dispatch = Dispatch::new("glDeformSGIX")

///|
extern "c" fn epoxy_glDeformSGIX(fp : CPtr, mask : UInt) -> Unit = "epoxy_glDeformSGIX"

///|
pub fn gl_deform_sgix(mask : UInt) -> Unit {
  epoxy_glDeformSGIX(d_glDeformSGIX.get(), mask)
}

///|
let d_glDeformationMap3dSGIX : Dispatch = Dispatch::new(
  "glDeformationMap3dSGIX",
)

///|
#borrow(points)
extern "c" fn epoxy_glDeformationMap3dSGIX(
  fp : CPtr,
  target : UInt,
  u1 : Double,
  u2 : Double,
  ustride : Int,
  uorder : Int,
  v1 : Double,
  v2 : Double,
  vstride : Int,
  vorder : Int,
  w1 : Double,
  w2 : Double,
  wstride : Int,
  worder : Int,
  points : FixedArray[Double],
) -> Unit = "epoxy_glDeformationMap3dSGIX"

///|
pub fn gl_deformation_map3d_sgix(
  target : UInt,
  u1 : Double,
  u2 : Double,
  ustride : Int,
  uorder : Int,
  v1 : Double,
  v2 : Double,
  vstride : Int,
  vorder : Int,
  w1 : Double,
  w2 : Double,
  wstride : Int,
  worder : Int,
  points : FixedArray[Double],
) -> Unit {
  epoxy_glDeformationMap3dSGIX(
    d_glDeformationMap3dSGIX.get(),
    target,
    u1,
    u2,
    ustride,
    uorder,
    v1,
    v2,
    vstride,
    vorder,
    w1,
    w2,
    wstride,
    worder,
    points,
  )
}

///|
let d_glDeformationMap3fSGIX : Dispatch = Dispatch::new(
  "glDeformationMap3fSGIX",
)

///|
#borrow(points)
extern "c" fn epoxy_glDeformationMap3fSGIX(
  fp : CPtr,
  target : UInt,
  u1 : Float,
  u2 : Float,
  ustride : Int,
  uorder : Int,
  v1 : Float,
  v2 : Float,
  vstride : Int,
  vorder : Int,
  w1 : Float,
  w2 : Float,
  wstride : Int,
  worder : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glDeformationMap3fSGIX"

///|
pub fn gl_deformation_map3f_sgix(
  target : UInt,
  u1 : Float,
  u2 : Float,
  ustride : Int,
  uorder : Int,
  v1 : Float,
  v2 : Float,
  vstride : Int,
  vorder : Int,
  w1 : Float,
  w2 : Float,
  wstride : Int,
  worder : Int,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glDeformationMap3fSGIX(
    d_glDeformationMap3fSGIX.get(),
    target,
    u1,
    u2,
    ustride,
    uorder,
    v1,
    v2,
    vstride,
    vorder,
    w1,
    w2,
    wstride,
    worder,
    points,
  )
}

///|
let d_glDeleteAsyncMarkersSGIX : Dispatch = Dispatch::new(
  "glDeleteAsyncMarkersSGIX",
)

///|
extern "c" fn epoxy_glDeleteAsyncMarkersSGIX(
  fp : CPtr,
  marker : UInt,
  range : Int,
) -> Unit = "epoxy_glDeleteAsyncMarkersSGIX"

///|
pub fn gl_delete_async_markers_sgix(marker : UInt, range : Int) -> Unit {
  epoxy_glDeleteAsyncMarkersSGIX(
    d_glDeleteAsyncMarkersSGIX.get(),
    marker,
    range,
  )
}

///|
let d_glDeleteBuffers : Dispatch = Dispatch::with_aliases("glDeleteBuffers", [
  "glDeleteBuffersARB",
])

///|
#borrow(buffers)
extern "c" fn epoxy_glDeleteBuffers(
  fp : CPtr,
  n : Int,
  buffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteBuffers"

///|
pub fn gl_delete_buffers(n : Int, buffers : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteBuffers(d_glDeleteBuffers.get(), n, buffers)
}

///|
let d_glDeleteBuffersARB : Dispatch = Dispatch::with_aliases(
  "glDeleteBuffersARB",
  ["glDeleteBuffers"],
)

///|
#borrow(buffers)
extern "c" fn epoxy_glDeleteBuffersARB(
  fp : CPtr,
  n : Int,
  buffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteBuffersARB"

///|
pub fn gl_delete_buffers_arb(n : Int, buffers : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteBuffersARB(d_glDeleteBuffersARB.get(), n, buffers)
}

///|
let d_glDeleteCommandListsNV : Dispatch = Dispatch::new(
  "glDeleteCommandListsNV",
)

///|
#borrow(lists)
extern "c" fn epoxy_glDeleteCommandListsNV(
  fp : CPtr,
  n : Int,
  lists : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteCommandListsNV"

///|
pub fn gl_delete_command_lists_nv(n : Int, lists : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteCommandListsNV(d_glDeleteCommandListsNV.get(), n, lists)
}

///|
let d_glDeleteFencesAPPLE : Dispatch = Dispatch::new("glDeleteFencesAPPLE")

///|
#borrow(fences)
extern "c" fn epoxy_glDeleteFencesAPPLE(
  fp : CPtr,
  n : Int,
  fences : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteFencesAPPLE"

///|
pub fn gl_delete_fences_apple(n : Int, fences : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteFencesAPPLE(d_glDeleteFencesAPPLE.get(), n, fences)
}

///|
let d_glDeleteFencesNV : Dispatch = Dispatch::new("glDeleteFencesNV")

///|
#borrow(fences)
extern "c" fn epoxy_glDeleteFencesNV(
  fp : CPtr,
  n : Int,
  fences : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteFencesNV"

///|
pub fn gl_delete_fences_nv(n : Int, fences : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteFencesNV(d_glDeleteFencesNV.get(), n, fences)
}

///|
let d_glDeleteFragmentShaderATI : Dispatch = Dispatch::new(
  "glDeleteFragmentShaderATI",
)

///|
extern "c" fn epoxy_glDeleteFragmentShaderATI(fp : CPtr, id : UInt) -> Unit = "epoxy_glDeleteFragmentShaderATI"

///|
pub fn gl_delete_fragment_shader_ati(id : UInt) -> Unit {
  epoxy_glDeleteFragmentShaderATI(d_glDeleteFragmentShaderATI.get(), id)
}

///|
let d_glDeleteFramebuffers : Dispatch = Dispatch::with_aliases(
  "glDeleteFramebuffers",
  ["glDeleteFramebuffersEXT"],
)

///|
#borrow(framebuffers)
extern "c" fn epoxy_glDeleteFramebuffers(
  fp : CPtr,
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteFramebuffers"

///|
pub fn gl_delete_framebuffers(n : Int, framebuffers : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteFramebuffers(d_glDeleteFramebuffers.get(), n, framebuffers)
}

///|
let d_glDeleteFramebuffersEXT : Dispatch = Dispatch::with_aliases(
  "glDeleteFramebuffersEXT",
  ["glDeleteFramebuffers"],
)

///|
#borrow(framebuffers)
extern "c" fn epoxy_glDeleteFramebuffersEXT(
  fp : CPtr,
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteFramebuffersEXT"

///|
pub fn gl_delete_framebuffers_ext(
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteFramebuffersEXT(
    d_glDeleteFramebuffersEXT.get(),
    n,
    framebuffers,
  )
}

///|
let d_glDeleteFramebuffersOES : Dispatch = Dispatch::new(
  "glDeleteFramebuffersOES",
)

///|
#borrow(framebuffers)
extern "c" fn epoxy_glDeleteFramebuffersOES(
  fp : CPtr,
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteFramebuffersOES"

///|
pub fn gl_delete_framebuffers_oes(
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteFramebuffersOES(
    d_glDeleteFramebuffersOES.get(),
    n,
    framebuffers,
  )
}

///|
let d_glDeleteLists : Dispatch = Dispatch::new("glDeleteLists")

///|
extern "c" fn epoxy_glDeleteLists(fp : CPtr, list : UInt, range : Int) -> Unit = "epoxy_glDeleteLists"

///|
pub fn gl_delete_lists(list : UInt, range : Int) -> Unit {
  epoxy_glDeleteLists(d_glDeleteLists.get(), list, range)
}

///|
let d_glDeleteMemoryObjectsEXT : Dispatch = Dispatch::new(
  "glDeleteMemoryObjectsEXT",
)

///|
#borrow(memoryObjects)
extern "c" fn epoxy_glDeleteMemoryObjectsEXT(
  fp : CPtr,
  n : Int,
  memoryObjects : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteMemoryObjectsEXT"

///|
pub fn gl_delete_memory_objects_ext(
  n : Int,
  memoryObjects : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteMemoryObjectsEXT(
    d_glDeleteMemoryObjectsEXT.get(),
    n,
    memoryObjects,
  )
}

///|
let d_glDeleteNamedStringARB : Dispatch = Dispatch::new(
  "glDeleteNamedStringARB",
)

///|
#borrow(name)
extern "c" fn epoxy_glDeleteNamedStringARB(
  fp : CPtr,
  namelen : Int,
  name : Bytes,
) -> Unit = "epoxy_glDeleteNamedStringARB"

///|
pub fn gl_delete_named_string_arb(namelen : Int, name : Bytes) -> Unit {
  epoxy_glDeleteNamedStringARB(d_glDeleteNamedStringARB.get(), namelen, name)
}

///|
let d_glDeleteNamesAMD : Dispatch = Dispatch::new("glDeleteNamesAMD")

///|
#borrow(names)
extern "c" fn epoxy_glDeleteNamesAMD(
  fp : CPtr,
  identifier : UInt,
  num : UInt,
  names : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteNamesAMD"

///|
pub fn gl_delete_names_amd(
  identifier : UInt,
  num : UInt,
  names : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteNamesAMD(d_glDeleteNamesAMD.get(), identifier, num, names)
}

///|
let d_glDeleteOcclusionQueriesNV : Dispatch = Dispatch::new(
  "glDeleteOcclusionQueriesNV",
)

///|
#borrow(ids)
extern "c" fn epoxy_glDeleteOcclusionQueriesNV(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteOcclusionQueriesNV"

///|
pub fn gl_delete_occlusion_queries_nv(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteOcclusionQueriesNV(d_glDeleteOcclusionQueriesNV.get(), n, ids)
}

///|
let d_glDeletePathsNV : Dispatch = Dispatch::new("glDeletePathsNV")

///|
extern "c" fn epoxy_glDeletePathsNV(
  fp : CPtr,
  path : UInt,
  range : Int,
) -> Unit = "epoxy_glDeletePathsNV"

///|
pub fn gl_delete_paths_nv(path : UInt, range : Int) -> Unit {
  epoxy_glDeletePathsNV(d_glDeletePathsNV.get(), path, range)
}

///|
let d_glDeletePerfMonitorsAMD : Dispatch = Dispatch::new(
  "glDeletePerfMonitorsAMD",
)

///|
#borrow(monitors)
extern "c" fn epoxy_glDeletePerfMonitorsAMD(
  fp : CPtr,
  n : Int,
  monitors : FixedArray[UInt],
) -> Unit = "epoxy_glDeletePerfMonitorsAMD"

///|
pub fn gl_delete_perf_monitors_amd(
  n : Int,
  monitors : FixedArray[UInt],
) -> Unit {
  epoxy_glDeletePerfMonitorsAMD(d_glDeletePerfMonitorsAMD.get(), n, monitors)
}

///|
let d_glDeletePerfQueryINTEL : Dispatch = Dispatch::new(
  "glDeletePerfQueryINTEL",
)

///|
extern "c" fn epoxy_glDeletePerfQueryINTEL(
  fp : CPtr,
  queryHandle : UInt,
) -> Unit = "epoxy_glDeletePerfQueryINTEL"

///|
pub fn gl_delete_perf_query_intel(queryHandle : UInt) -> Unit {
  epoxy_glDeletePerfQueryINTEL(d_glDeletePerfQueryINTEL.get(), queryHandle)
}

///|
let d_glDeleteProgram : Dispatch = Dispatch::new("glDeleteProgram")

///|
extern "c" fn epoxy_glDeleteProgram(fp : CPtr, program : UInt) -> Unit = "epoxy_glDeleteProgram"

///|
pub fn gl_delete_program(program : UInt) -> Unit {
  epoxy_glDeleteProgram(d_glDeleteProgram.get(), program)
}

///|
let d_glDeleteProgramPipelines : Dispatch = Dispatch::new(
  "glDeleteProgramPipelines",
)

///|
#borrow(pipelines)
extern "c" fn epoxy_glDeleteProgramPipelines(
  fp : CPtr,
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteProgramPipelines"

///|
pub fn gl_delete_program_pipelines(
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteProgramPipelines(d_glDeleteProgramPipelines.get(), n, pipelines)
}

///|
let d_glDeleteProgramPipelinesEXT : Dispatch = Dispatch::new(
  "glDeleteProgramPipelinesEXT",
)

///|
#borrow(pipelines)
extern "c" fn epoxy_glDeleteProgramPipelinesEXT(
  fp : CPtr,
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteProgramPipelinesEXT"

///|
pub fn gl_delete_program_pipelines_ext(
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteProgramPipelinesEXT(
    d_glDeleteProgramPipelinesEXT.get(),
    n,
    pipelines,
  )
}

///|
let d_glDeleteProgramsARB : Dispatch = Dispatch::with_aliases(
  "glDeleteProgramsARB",
  ["glDeleteProgramsNV"],
)

///|
#borrow(programs)
extern "c" fn epoxy_glDeleteProgramsARB(
  fp : CPtr,
  n : Int,
  programs : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteProgramsARB"

///|
pub fn gl_delete_programs_arb(n : Int, programs : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteProgramsARB(d_glDeleteProgramsARB.get(), n, programs)
}

///|
let d_glDeleteProgramsNV : Dispatch = Dispatch::with_aliases(
  "glDeleteProgramsNV",
  ["glDeleteProgramsARB"],
)

///|
#borrow(programs)
extern "c" fn epoxy_glDeleteProgramsNV(
  fp : CPtr,
  n : Int,
  programs : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteProgramsNV"

///|
pub fn gl_delete_programs_nv(n : Int, programs : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteProgramsNV(d_glDeleteProgramsNV.get(), n, programs)
}

///|
let d_glDeleteQueries : Dispatch = Dispatch::with_aliases("glDeleteQueries", [
  "glDeleteQueriesARB",
])

///|
#borrow(ids)
extern "c" fn epoxy_glDeleteQueries(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteQueries"

///|
pub fn gl_delete_queries(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteQueries(d_glDeleteQueries.get(), n, ids)
}

///|
let d_glDeleteQueriesARB : Dispatch = Dispatch::with_aliases(
  "glDeleteQueriesARB",
  ["glDeleteQueries"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glDeleteQueriesARB(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteQueriesARB"

///|
pub fn gl_delete_queries_arb(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteQueriesARB(d_glDeleteQueriesARB.get(), n, ids)
}

///|
let d_glDeleteQueriesEXT : Dispatch = Dispatch::new("glDeleteQueriesEXT")

///|
#borrow(ids)
extern "c" fn epoxy_glDeleteQueriesEXT(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteQueriesEXT"

///|
pub fn gl_delete_queries_ext(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteQueriesEXT(d_glDeleteQueriesEXT.get(), n, ids)
}

///|
let d_glDeleteQueryResourceTagNV : Dispatch = Dispatch::new(
  "glDeleteQueryResourceTagNV",
)

///|
#borrow(tagIds)
extern "c" fn epoxy_glDeleteQueryResourceTagNV(
  fp : CPtr,
  n : Int,
  tagIds : FixedArray[Int],
) -> Unit = "epoxy_glDeleteQueryResourceTagNV"

///|
pub fn gl_delete_query_resource_tag_nv(
  n : Int,
  tagIds : FixedArray[Int],
) -> Unit {
  epoxy_glDeleteQueryResourceTagNV(
    d_glDeleteQueryResourceTagNV.get(),
    n,
    tagIds,
  )
}

///|
let d_glDeleteRenderbuffers : Dispatch = Dispatch::with_aliases(
  "glDeleteRenderbuffers",
  ["glDeleteRenderbuffersEXT"],
)

///|
#borrow(renderbuffers)
extern "c" fn epoxy_glDeleteRenderbuffers(
  fp : CPtr,
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteRenderbuffers"

///|
pub fn gl_delete_renderbuffers(
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteRenderbuffers(d_glDeleteRenderbuffers.get(), n, renderbuffers)
}

///|
let d_glDeleteRenderbuffersEXT : Dispatch = Dispatch::with_aliases(
  "glDeleteRenderbuffersEXT",
  ["glDeleteRenderbuffers"],
)

///|
#borrow(renderbuffers)
extern "c" fn epoxy_glDeleteRenderbuffersEXT(
  fp : CPtr,
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteRenderbuffersEXT"

///|
pub fn gl_delete_renderbuffers_ext(
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteRenderbuffersEXT(
    d_glDeleteRenderbuffersEXT.get(),
    n,
    renderbuffers,
  )
}

///|
let d_glDeleteRenderbuffersOES : Dispatch = Dispatch::new(
  "glDeleteRenderbuffersOES",
)

///|
#borrow(renderbuffers)
extern "c" fn epoxy_glDeleteRenderbuffersOES(
  fp : CPtr,
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteRenderbuffersOES"

///|
pub fn gl_delete_renderbuffers_oes(
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteRenderbuffersOES(
    d_glDeleteRenderbuffersOES.get(),
    n,
    renderbuffers,
  )
}

///|
let d_glDeleteSamplers : Dispatch = Dispatch::new("glDeleteSamplers")

///|
#borrow(samplers)
extern "c" fn epoxy_glDeleteSamplers(
  fp : CPtr,
  count : Int,
  samplers : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteSamplers"

///|
pub fn gl_delete_samplers(count : Int, samplers : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteSamplers(d_glDeleteSamplers.get(), count, samplers)
}

///|
let d_glDeleteSemaphoresEXT : Dispatch = Dispatch::new("glDeleteSemaphoresEXT")

///|
#borrow(semaphores)
extern "c" fn epoxy_glDeleteSemaphoresEXT(
  fp : CPtr,
  n : Int,
  semaphores : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteSemaphoresEXT"

///|
pub fn gl_delete_semaphores_ext(n : Int, semaphores : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteSemaphoresEXT(d_glDeleteSemaphoresEXT.get(), n, semaphores)
}

///|
let d_glDeleteShader : Dispatch = Dispatch::new("glDeleteShader")

///|
extern "c" fn epoxy_glDeleteShader(fp : CPtr, shader : UInt) -> Unit = "epoxy_glDeleteShader"

///|
pub fn gl_delete_shader(shader : UInt) -> Unit {
  epoxy_glDeleteShader(d_glDeleteShader.get(), shader)
}

///|
let d_glDeleteStatesNV : Dispatch = Dispatch::new("glDeleteStatesNV")

///|
#borrow(states)
extern "c" fn epoxy_glDeleteStatesNV(
  fp : CPtr,
  n : Int,
  states : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteStatesNV"

///|
pub fn gl_delete_states_nv(n : Int, states : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteStatesNV(d_glDeleteStatesNV.get(), n, states)
}

///|
let d_glDeleteSync : Dispatch = Dispatch::with_aliases("glDeleteSync", [
  "glDeleteSyncAPPLE",
])

///|
extern "c" fn epoxy_glDeleteSync(fp : CPtr, sync : GLsync) -> Unit = "epoxy_glDeleteSync"

///|
pub fn gl_delete_sync(sync : GLsync) -> Unit {
  epoxy_glDeleteSync(d_glDeleteSync.get(), sync)
}

///|
let d_glDeleteSyncAPPLE : Dispatch = Dispatch::with_aliases(
  "glDeleteSyncAPPLE",
  ["glDeleteSync"],
)

///|
extern "c" fn epoxy_glDeleteSyncAPPLE(fp : CPtr, sync : GLsync) -> Unit = "epoxy_glDeleteSyncAPPLE"

///|
pub fn gl_delete_sync_apple(sync : GLsync) -> Unit {
  epoxy_glDeleteSyncAPPLE(d_glDeleteSyncAPPLE.get(), sync)
}

///|
let d_glDeleteTextures : Dispatch = Dispatch::new("glDeleteTextures")

///|
#borrow(textures)
extern "c" fn epoxy_glDeleteTextures(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteTextures"

///|
pub fn gl_delete_textures(n : Int, textures : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteTextures(d_glDeleteTextures.get(), n, textures)
}

///|
let d_glDeleteTexturesEXT : Dispatch = Dispatch::new("glDeleteTexturesEXT")

///|
#borrow(textures)
extern "c" fn epoxy_glDeleteTexturesEXT(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteTexturesEXT"

///|
pub fn gl_delete_textures_ext(n : Int, textures : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteTexturesEXT(d_glDeleteTexturesEXT.get(), n, textures)
}

///|
let d_glDeleteTransformFeedbacks : Dispatch = Dispatch::with_aliases(
  "glDeleteTransformFeedbacks",
  ["glDeleteTransformFeedbacksNV"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glDeleteTransformFeedbacks(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteTransformFeedbacks"

///|
pub fn gl_delete_transform_feedbacks(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteTransformFeedbacks(d_glDeleteTransformFeedbacks.get(), n, ids)
}

///|
let d_glDeleteTransformFeedbacksNV : Dispatch = Dispatch::with_aliases(
  "glDeleteTransformFeedbacksNV",
  ["glDeleteTransformFeedbacks"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glDeleteTransformFeedbacksNV(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteTransformFeedbacksNV"

///|
pub fn gl_delete_transform_feedbacks_nv(
  n : Int,
  ids : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteTransformFeedbacksNV(
    d_glDeleteTransformFeedbacksNV.get(),
    n,
    ids,
  )
}

///|
let d_glDeleteVertexArrays : Dispatch = Dispatch::with_aliases(
  "glDeleteVertexArrays",
  ["glDeleteVertexArraysAPPLE", "glDeleteVertexArraysOES"],
)

///|
#borrow(arrays)
extern "c" fn epoxy_glDeleteVertexArrays(
  fp : CPtr,
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteVertexArrays"

///|
pub fn gl_delete_vertex_arrays(n : Int, arrays : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteVertexArrays(d_glDeleteVertexArrays.get(), n, arrays)
}

///|
let d_glDeleteVertexArraysAPPLE : Dispatch = Dispatch::with_aliases(
  "glDeleteVertexArraysAPPLE",
  ["glDeleteVertexArrays", "glDeleteVertexArraysOES"],
)

///|
#borrow(arrays)
extern "c" fn epoxy_glDeleteVertexArraysAPPLE(
  fp : CPtr,
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteVertexArraysAPPLE"

///|
pub fn gl_delete_vertex_arrays_apple(
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit {
  epoxy_glDeleteVertexArraysAPPLE(d_glDeleteVertexArraysAPPLE.get(), n, arrays)
}

///|
let d_glDeleteVertexArraysOES : Dispatch = Dispatch::with_aliases(
  "glDeleteVertexArraysOES",
  ["glDeleteVertexArrays", "glDeleteVertexArraysAPPLE"],
)

///|
#borrow(arrays)
extern "c" fn epoxy_glDeleteVertexArraysOES(
  fp : CPtr,
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit = "epoxy_glDeleteVertexArraysOES"

///|
pub fn gl_delete_vertex_arrays_oes(n : Int, arrays : FixedArray[UInt]) -> Unit {
  epoxy_glDeleteVertexArraysOES(d_glDeleteVertexArraysOES.get(), n, arrays)
}

///|
let d_glDeleteVertexShaderEXT : Dispatch = Dispatch::new(
  "glDeleteVertexShaderEXT",
)

///|
extern "c" fn epoxy_glDeleteVertexShaderEXT(fp : CPtr, id : UInt) -> Unit = "epoxy_glDeleteVertexShaderEXT"

///|
pub fn gl_delete_vertex_shader_ext(id : UInt) -> Unit {
  epoxy_glDeleteVertexShaderEXT(d_glDeleteVertexShaderEXT.get(), id)
}

///|
let d_glDepthBoundsEXT : Dispatch = Dispatch::new("glDepthBoundsEXT")

///|
extern "c" fn epoxy_glDepthBoundsEXT(
  fp : CPtr,
  zmin : Double,
  zmax : Double,
) -> Unit = "epoxy_glDepthBoundsEXT"

///|
pub fn gl_depth_bounds_ext(zmin : Double, zmax : Double) -> Unit {
  epoxy_glDepthBoundsEXT(d_glDepthBoundsEXT.get(), zmin, zmax)
}

///|
let d_glDepthBoundsdNV : Dispatch = Dispatch::new("glDepthBoundsdNV")

///|
extern "c" fn epoxy_glDepthBoundsdNV(
  fp : CPtr,
  zmin : Double,
  zmax : Double,
) -> Unit = "epoxy_glDepthBoundsdNV"

///|
pub fn gl_depth_boundsd_nv(zmin : Double, zmax : Double) -> Unit {
  epoxy_glDepthBoundsdNV(d_glDepthBoundsdNV.get(), zmin, zmax)
}

///|
let d_glDepthFunc : Dispatch = Dispatch::new("glDepthFunc")

///|
extern "c" fn epoxy_glDepthFunc(fp : CPtr, func : UInt) -> Unit = "epoxy_glDepthFunc"

///|
pub fn gl_depth_func(func : UInt) -> Unit {
  epoxy_glDepthFunc(d_glDepthFunc.get(), func)
}

///|
let d_glDepthMask : Dispatch = Dispatch::new("glDepthMask")

///|
extern "c" fn epoxy_glDepthMask(fp : CPtr, flag : Bool) -> Unit = "epoxy_glDepthMask"

///|
pub fn gl_depth_mask(flag : Bool) -> Unit {
  epoxy_glDepthMask(d_glDepthMask.get(), flag)
}

///|
let d_glDepthRange : Dispatch = Dispatch::new("glDepthRange")

///|
extern "c" fn epoxy_glDepthRange(fp : CPtr, n : Double, f : Double) -> Unit = "epoxy_glDepthRange"

///|
pub fn gl_depth_range(n : Double, f : Double) -> Unit {
  epoxy_glDepthRange(d_glDepthRange.get(), n, f)
}

///|
let d_glDepthRangeArraydvNV : Dispatch = Dispatch::new("glDepthRangeArraydvNV")

///|
#borrow(v)
extern "c" fn epoxy_glDepthRangeArraydvNV(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glDepthRangeArraydvNV"

///|
pub fn gl_depth_range_arraydv_nv(
  first : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glDepthRangeArraydvNV(d_glDepthRangeArraydvNV.get(), first, count, v)
}

///|
let d_glDepthRangeArrayfvNV : Dispatch = Dispatch::new("glDepthRangeArrayfvNV")

///|
#borrow(v)
extern "c" fn epoxy_glDepthRangeArrayfvNV(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glDepthRangeArrayfvNV"

///|
pub fn gl_depth_range_arrayfv_nv(
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glDepthRangeArrayfvNV(d_glDepthRangeArrayfvNV.get(), first, count, v)
}

///|
let d_glDepthRangeArrayfvOES : Dispatch = Dispatch::new(
  "glDepthRangeArrayfvOES",
)

///|
#borrow(v)
extern "c" fn epoxy_glDepthRangeArrayfvOES(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glDepthRangeArrayfvOES"

///|
pub fn gl_depth_range_arrayfv_oes(
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glDepthRangeArrayfvOES(d_glDepthRangeArrayfvOES.get(), first, count, v)
}

///|
let d_glDepthRangeArrayv : Dispatch = Dispatch::new("glDepthRangeArrayv")

///|
#borrow(v)
extern "c" fn epoxy_glDepthRangeArrayv(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glDepthRangeArrayv"

///|
pub fn gl_depth_range_arrayv(
  first : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glDepthRangeArrayv(d_glDepthRangeArrayv.get(), first, count, v)
}

///|
let d_glDepthRangeIndexed : Dispatch = Dispatch::new("glDepthRangeIndexed")

///|
extern "c" fn epoxy_glDepthRangeIndexed(
  fp : CPtr,
  index : UInt,
  n : Double,
  f : Double,
) -> Unit = "epoxy_glDepthRangeIndexed"

///|
pub fn gl_depth_range_indexed(index : UInt, n : Double, f : Double) -> Unit {
  epoxy_glDepthRangeIndexed(d_glDepthRangeIndexed.get(), index, n, f)
}

///|
let d_glDepthRangeIndexeddNV : Dispatch = Dispatch::new(
  "glDepthRangeIndexeddNV",
)

///|
extern "c" fn epoxy_glDepthRangeIndexeddNV(
  fp : CPtr,
  index : UInt,
  n : Double,
  f : Double,
) -> Unit = "epoxy_glDepthRangeIndexeddNV"

///|
pub fn gl_depth_range_indexedd_nv(index : UInt, n : Double, f : Double) -> Unit {
  epoxy_glDepthRangeIndexeddNV(d_glDepthRangeIndexeddNV.get(), index, n, f)
}

///|
let d_glDepthRangeIndexedfNV : Dispatch = Dispatch::new(
  "glDepthRangeIndexedfNV",
)

///|
extern "c" fn epoxy_glDepthRangeIndexedfNV(
  fp : CPtr,
  index : UInt,
  n : Float,
  f : Float,
) -> Unit = "epoxy_glDepthRangeIndexedfNV"

///|
pub fn gl_depth_range_indexedf_nv(index : UInt, n : Float, f : Float) -> Unit {
  epoxy_glDepthRangeIndexedfNV(d_glDepthRangeIndexedfNV.get(), index, n, f)
}

///|
let d_glDepthRangeIndexedfOES : Dispatch = Dispatch::new(
  "glDepthRangeIndexedfOES",
)

///|
extern "c" fn epoxy_glDepthRangeIndexedfOES(
  fp : CPtr,
  index : UInt,
  n : Float,
  f : Float,
) -> Unit = "epoxy_glDepthRangeIndexedfOES"

///|
pub fn gl_depth_range_indexedf_oes(index : UInt, n : Float, f : Float) -> Unit {
  epoxy_glDepthRangeIndexedfOES(d_glDepthRangeIndexedfOES.get(), index, n, f)
}

///|
let d_glDepthRangedNV : Dispatch = Dispatch::new("glDepthRangedNV")

///|
extern "c" fn epoxy_glDepthRangedNV(
  fp : CPtr,
  zNear : Double,
  zFar : Double,
) -> Unit = "epoxy_glDepthRangedNV"

///|
pub fn gl_depth_ranged_nv(zNear : Double, zFar : Double) -> Unit {
  epoxy_glDepthRangedNV(d_glDepthRangedNV.get(), zNear, zFar)
}

///|
let d_glDepthRangef : Dispatch = Dispatch::with_aliases("glDepthRangef", [
  "glDepthRangefOES",
])

///|
extern "c" fn epoxy_glDepthRangef(fp : CPtr, n : Float, f : Float) -> Unit = "epoxy_glDepthRangef"

///|
pub fn gl_depth_rangef(n : Float, f : Float) -> Unit {
  epoxy_glDepthRangef(d_glDepthRangef.get(), n, f)
}

///|
let d_glDepthRangefOES : Dispatch = Dispatch::with_aliases("glDepthRangefOES", [
  "glDepthRangef",
])

///|
extern "c" fn epoxy_glDepthRangefOES(fp : CPtr, n : Float, f : Float) -> Unit = "epoxy_glDepthRangefOES"

///|
pub fn gl_depth_rangef_oes(n : Float, f : Float) -> Unit {
  epoxy_glDepthRangefOES(d_glDepthRangefOES.get(), n, f)
}

///|
let d_glDepthRangex : Dispatch = Dispatch::new("glDepthRangex")

///|
extern "c" fn epoxy_glDepthRangex(fp : CPtr, n : Int, f : Int) -> Unit = "epoxy_glDepthRangex"

///|
pub fn gl_depth_rangex(n : Int, f : Int) -> Unit {
  epoxy_glDepthRangex(d_glDepthRangex.get(), n, f)
}

///|
let d_glDepthRangexOES : Dispatch = Dispatch::new("glDepthRangexOES")

///|
extern "c" fn epoxy_glDepthRangexOES(fp : CPtr, n : Int, f : Int) -> Unit = "epoxy_glDepthRangexOES"

///|
pub fn gl_depth_rangex_oes(n : Int, f : Int) -> Unit {
  epoxy_glDepthRangexOES(d_glDepthRangexOES.get(), n, f)
}

///|
let d_glDetachShader : Dispatch = Dispatch::with_aliases("glDetachShader", [
  "glDetachObjectARB",
])

///|
extern "c" fn epoxy_glDetachShader(
  fp : CPtr,
  program : UInt,
  shader : UInt,
) -> Unit = "epoxy_glDetachShader"

///|
pub fn gl_detach_shader(program : UInt, shader : UInt) -> Unit {
  epoxy_glDetachShader(d_glDetachShader.get(), program, shader)
}

///|
let d_glDetailTexFuncSGIS : Dispatch = Dispatch::new("glDetailTexFuncSGIS")

///|
#borrow(points)
extern "c" fn epoxy_glDetailTexFuncSGIS(
  fp : CPtr,
  target : UInt,
  n : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glDetailTexFuncSGIS"

///|
pub fn gl_detail_tex_func_sgis(
  target : UInt,
  n : Int,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glDetailTexFuncSGIS(d_glDetailTexFuncSGIS.get(), target, n, points)
}

///|
let d_glDisable : Dispatch = Dispatch::new("glDisable")

///|
extern "c" fn epoxy_glDisable(fp : CPtr, cap : UInt) -> Unit = "epoxy_glDisable"

///|
pub fn gl_disable(cap : UInt) -> Unit {
  epoxy_glDisable(d_glDisable.get(), cap)
}

///|
let d_glDisableClientState : Dispatch = Dispatch::new("glDisableClientState")

///|
extern "c" fn epoxy_glDisableClientState(fp : CPtr, array : UInt) -> Unit = "epoxy_glDisableClientState"

///|
pub fn gl_disable_client_state(array : UInt) -> Unit {
  epoxy_glDisableClientState(d_glDisableClientState.get(), array)
}

///|
let d_glDisableClientStateIndexedEXT : Dispatch = Dispatch::new(
  "glDisableClientStateIndexedEXT",
)

///|
extern "c" fn epoxy_glDisableClientStateIndexedEXT(
  fp : CPtr,
  array : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableClientStateIndexedEXT"

///|
pub fn gl_disable_client_state_indexed_ext(array : UInt, index : UInt) -> Unit {
  epoxy_glDisableClientStateIndexedEXT(
    d_glDisableClientStateIndexedEXT.get(),
    array,
    index,
  )
}

///|
let d_glDisableClientStateiEXT : Dispatch = Dispatch::new(
  "glDisableClientStateiEXT",
)

///|
extern "c" fn epoxy_glDisableClientStateiEXT(
  fp : CPtr,
  array : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableClientStateiEXT"

///|
pub fn gl_disable_client_statei_ext(array : UInt, index : UInt) -> Unit {
  epoxy_glDisableClientStateiEXT(d_glDisableClientStateiEXT.get(), array, index)
}

///|
let d_glDisableDriverControlQCOM : Dispatch = Dispatch::new(
  "glDisableDriverControlQCOM",
)

///|
extern "c" fn epoxy_glDisableDriverControlQCOM(
  fp : CPtr,
  driverControl : UInt,
) -> Unit = "epoxy_glDisableDriverControlQCOM"

///|
pub fn gl_disable_driver_control_qcom(driverControl : UInt) -> Unit {
  epoxy_glDisableDriverControlQCOM(
    d_glDisableDriverControlQCOM.get(),
    driverControl,
  )
}

///|
let d_glDisableIndexedEXT : Dispatch = Dispatch::with_aliases(
  "glDisableIndexedEXT",
  ["glDisablei", "glDisableiEXT", "glDisableiNV", "glDisableiOES"],
)

///|
extern "c" fn epoxy_glDisableIndexedEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableIndexedEXT"

///|
pub fn gl_disable_indexed_ext(target : UInt, index : UInt) -> Unit {
  epoxy_glDisableIndexedEXT(d_glDisableIndexedEXT.get(), target, index)
}

///|
let d_glDisableVariantClientStateEXT : Dispatch = Dispatch::new(
  "glDisableVariantClientStateEXT",
)

///|
extern "c" fn epoxy_glDisableVariantClientStateEXT(
  fp : CPtr,
  id : UInt,
) -> Unit = "epoxy_glDisableVariantClientStateEXT"

///|
pub fn gl_disable_variant_client_state_ext(id : UInt) -> Unit {
  epoxy_glDisableVariantClientStateEXT(
    d_glDisableVariantClientStateEXT.get(),
    id,
  )
}

///|
let d_glDisableVertexArrayAttrib : Dispatch = Dispatch::new(
  "glDisableVertexArrayAttrib",
)

///|
extern "c" fn epoxy_glDisableVertexArrayAttrib(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableVertexArrayAttrib"

///|
pub fn gl_disable_vertex_array_attrib(vaobj : UInt, index : UInt) -> Unit {
  epoxy_glDisableVertexArrayAttrib(
    d_glDisableVertexArrayAttrib.get(),
    vaobj,
    index,
  )
}

///|
let d_glDisableVertexArrayAttribEXT : Dispatch = Dispatch::new(
  "glDisableVertexArrayAttribEXT",
)

///|
extern "c" fn epoxy_glDisableVertexArrayAttribEXT(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableVertexArrayAttribEXT"

///|
pub fn gl_disable_vertex_array_attrib_ext(vaobj : UInt, index : UInt) -> Unit {
  epoxy_glDisableVertexArrayAttribEXT(
    d_glDisableVertexArrayAttribEXT.get(),
    vaobj,
    index,
  )
}

///|
let d_glDisableVertexArrayEXT : Dispatch = Dispatch::new(
  "glDisableVertexArrayEXT",
)

///|
extern "c" fn epoxy_glDisableVertexArrayEXT(
  fp : CPtr,
  vaobj : UInt,
  array : UInt,
) -> Unit = "epoxy_glDisableVertexArrayEXT"

///|
pub fn gl_disable_vertex_array_ext(vaobj : UInt, array : UInt) -> Unit {
  epoxy_glDisableVertexArrayEXT(d_glDisableVertexArrayEXT.get(), vaobj, array)
}

///|
let d_glDisableVertexAttribAPPLE : Dispatch = Dispatch::new(
  "glDisableVertexAttribAPPLE",
)

///|
extern "c" fn epoxy_glDisableVertexAttribAPPLE(
  fp : CPtr,
  index : UInt,
  pname : UInt,
) -> Unit = "epoxy_glDisableVertexAttribAPPLE"

///|
pub fn gl_disable_vertex_attrib_apple(index : UInt, pname : UInt) -> Unit {
  epoxy_glDisableVertexAttribAPPLE(
    d_glDisableVertexAttribAPPLE.get(),
    index,
    pname,
  )
}

///|
let d_glDisableVertexAttribArray : Dispatch = Dispatch::with_aliases(
  "glDisableVertexAttribArray",
  ["glDisableVertexAttribArrayARB"],
)

///|
extern "c" fn epoxy_glDisableVertexAttribArray(fp : CPtr, index : UInt) -> Unit = "epoxy_glDisableVertexAttribArray"

///|
pub fn gl_disable_vertex_attrib_array(index : UInt) -> Unit {
  epoxy_glDisableVertexAttribArray(d_glDisableVertexAttribArray.get(), index)
}

///|
let d_glDisableVertexAttribArrayARB : Dispatch = Dispatch::with_aliases(
  "glDisableVertexAttribArrayARB",
  ["glDisableVertexAttribArray"],
)

///|
extern "c" fn epoxy_glDisableVertexAttribArrayARB(
  fp : CPtr,
  index : UInt,
) -> Unit = "epoxy_glDisableVertexAttribArrayARB"

///|
pub fn gl_disable_vertex_attrib_array_arb(index : UInt) -> Unit {
  epoxy_glDisableVertexAttribArrayARB(
    d_glDisableVertexAttribArrayARB.get(),
    index,
  )
}

///|
let d_glDisablei : Dispatch = Dispatch::with_aliases("glDisablei", [
  "glDisableIndexedEXT", "glDisableiEXT", "glDisableiNV", "glDisableiOES",
])

///|
extern "c" fn epoxy_glDisablei(fp : CPtr, target : UInt, index : UInt) -> Unit = "epoxy_glDisablei"

///|
pub fn gl_disablei(target : UInt, index : UInt) -> Unit {
  epoxy_glDisablei(d_glDisablei.get(), target, index)
}

///|
let d_glDisableiEXT : Dispatch = Dispatch::with_aliases("glDisableiEXT", [
  "glDisableIndexedEXT", "glDisablei", "glDisableiNV", "glDisableiOES",
])

///|
extern "c" fn epoxy_glDisableiEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableiEXT"

///|
pub fn gl_disablei_ext(target : UInt, index : UInt) -> Unit {
  epoxy_glDisableiEXT(d_glDisableiEXT.get(), target, index)
}

///|
let d_glDisableiNV : Dispatch = Dispatch::with_aliases("glDisableiNV", [
  "glDisableIndexedEXT", "glDisablei", "glDisableiEXT", "glDisableiOES",
])

///|
extern "c" fn epoxy_glDisableiNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableiNV"

///|
pub fn gl_disablei_nv(target : UInt, index : UInt) -> Unit {
  epoxy_glDisableiNV(d_glDisableiNV.get(), target, index)
}

///|
let d_glDisableiOES : Dispatch = Dispatch::with_aliases("glDisableiOES", [
  "glDisableIndexedEXT", "glDisablei", "glDisableiEXT", "glDisableiNV",
])

///|
extern "c" fn epoxy_glDisableiOES(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glDisableiOES"

///|
pub fn gl_disablei_oes(target : UInt, index : UInt) -> Unit {
  epoxy_glDisableiOES(d_glDisableiOES.get(), target, index)
}

///|
let d_glDiscardFramebufferEXT : Dispatch = Dispatch::new(
  "glDiscardFramebufferEXT",
)

///|
#borrow(attachments)
extern "c" fn epoxy_glDiscardFramebufferEXT(
  fp : CPtr,
  target : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
) -> Unit = "epoxy_glDiscardFramebufferEXT"

///|
pub fn gl_discard_framebuffer_ext(
  target : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
) -> Unit {
  epoxy_glDiscardFramebufferEXT(
    d_glDiscardFramebufferEXT.get(),
    target,
    numAttachments,
    attachments,
  )
}

///|
let d_glDispatchCompute : Dispatch = Dispatch::new("glDispatchCompute")

///|
extern "c" fn epoxy_glDispatchCompute(
  fp : CPtr,
  num_groups_x : UInt,
  num_groups_y : UInt,
  num_groups_z : UInt,
) -> Unit = "epoxy_glDispatchCompute"

///|
pub fn gl_dispatch_compute(
  num_groups_x : UInt,
  num_groups_y : UInt,
  num_groups_z : UInt,
) -> Unit {
  epoxy_glDispatchCompute(
    d_glDispatchCompute.get(),
    num_groups_x,
    num_groups_y,
    num_groups_z,
  )
}

///|
let d_glDispatchComputeGroupSizeARB : Dispatch = Dispatch::new(
  "glDispatchComputeGroupSizeARB",
)

///|
extern "c" fn epoxy_glDispatchComputeGroupSizeARB(
  fp : CPtr,
  num_groups_x : UInt,
  num_groups_y : UInt,
  num_groups_z : UInt,
  group_size_x : UInt,
  group_size_y : UInt,
  group_size_z : UInt,
) -> Unit = "epoxy_glDispatchComputeGroupSizeARB"

///|
pub fn gl_dispatch_compute_group_size_arb(
  num_groups_x : UInt,
  num_groups_y : UInt,
  num_groups_z : UInt,
  group_size_x : UInt,
  group_size_y : UInt,
  group_size_z : UInt,
) -> Unit {
  epoxy_glDispatchComputeGroupSizeARB(
    d_glDispatchComputeGroupSizeARB.get(),
    num_groups_x,
    num_groups_y,
    num_groups_z,
    group_size_x,
    group_size_y,
    group_size_z,
  )
}

///|
let d_glDispatchComputeIndirect : Dispatch = Dispatch::new(
  "glDispatchComputeIndirect",
)

///|
extern "c" fn epoxy_glDispatchComputeIndirect(
  fp : CPtr,
  indirect : Int64,
) -> Unit = "epoxy_glDispatchComputeIndirect"

///|
pub fn gl_dispatch_compute_indirect(indirect : Int64) -> Unit {
  epoxy_glDispatchComputeIndirect(d_glDispatchComputeIndirect.get(), indirect)
}

///|
let d_glDrawArrays : Dispatch = Dispatch::with_aliases("glDrawArrays", [
  "glDrawArraysEXT",
])

///|
extern "c" fn epoxy_glDrawArrays(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
) -> Unit = "epoxy_glDrawArrays"

///|
pub fn gl_draw_arrays(mode : UInt, first : Int, count : Int) -> Unit {
  epoxy_glDrawArrays(d_glDrawArrays.get(), mode, first, count)
}

///|
let d_glDrawArraysEXT : Dispatch = Dispatch::with_aliases("glDrawArraysEXT", [
  "glDrawArrays",
])

///|
extern "c" fn epoxy_glDrawArraysEXT(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
) -> Unit = "epoxy_glDrawArraysEXT"

///|
pub fn gl_draw_arrays_ext(mode : UInt, first : Int, count : Int) -> Unit {
  epoxy_glDrawArraysEXT(d_glDrawArraysEXT.get(), mode, first, count)
}

///|
let d_glDrawArraysIndirect : Dispatch = Dispatch::new("glDrawArraysIndirect")

///|
#borrow(indirect)
extern "c" fn epoxy_glDrawArraysIndirect(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
) -> Unit = "epoxy_glDrawArraysIndirect"

///|
pub fn gl_draw_arrays_indirect(mode : UInt, indirect : Bytes) -> Unit {
  epoxy_glDrawArraysIndirect(d_glDrawArraysIndirect.get(), mode, indirect)
}

///|
let d_glDrawArraysInstanced : Dispatch = Dispatch::with_aliases(
  "glDrawArraysInstanced",
  [
    "glDrawArraysInstancedANGLE", "glDrawArraysInstancedARB", "glDrawArraysInstancedEXT",
    "glDrawArraysInstancedNV",
  ],
)

///|
extern "c" fn epoxy_glDrawArraysInstanced(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
  instancecount : Int,
) -> Unit = "epoxy_glDrawArraysInstanced"

///|
pub fn gl_draw_arrays_instanced(
  mode : UInt,
  first : Int,
  count : Int,
  instancecount : Int,
) -> Unit {
  epoxy_glDrawArraysInstanced(
    d_glDrawArraysInstanced.get(),
    mode,
    first,
    count,
    instancecount,
  )
}

///|
let d_glDrawArraysInstancedANGLE : Dispatch = Dispatch::with_aliases(
  "glDrawArraysInstancedANGLE",
  [
    "glDrawArraysInstanced", "glDrawArraysInstancedARB", "glDrawArraysInstancedEXT",
    "glDrawArraysInstancedNV",
  ],
)

///|
extern "c" fn epoxy_glDrawArraysInstancedANGLE(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
  primcount : Int,
) -> Unit = "epoxy_glDrawArraysInstancedANGLE"

///|
pub fn gl_draw_arrays_instanced_angle(
  mode : UInt,
  first : Int,
  count : Int,
  primcount : Int,
) -> Unit {
  epoxy_glDrawArraysInstancedANGLE(
    d_glDrawArraysInstancedANGLE.get(),
    mode,
    first,
    count,
    primcount,
  )
}

///|
let d_glDrawArraysInstancedARB : Dispatch = Dispatch::with_aliases(
  "glDrawArraysInstancedARB",
  [
    "glDrawArraysInstanced", "glDrawArraysInstancedANGLE", "glDrawArraysInstancedEXT",
    "glDrawArraysInstancedNV",
  ],
)

///|
extern "c" fn epoxy_glDrawArraysInstancedARB(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
  primcount : Int,
) -> Unit = "epoxy_glDrawArraysInstancedARB"

///|
pub fn gl_draw_arrays_instanced_arb(
  mode : UInt,
  first : Int,
  count : Int,
  primcount : Int,
) -> Unit {
  epoxy_glDrawArraysInstancedARB(
    d_glDrawArraysInstancedARB.get(),
    mode,
    first,
    count,
    primcount,
  )
}

///|
let d_glDrawArraysInstancedBaseInstance : Dispatch = Dispatch::with_aliases(
  "glDrawArraysInstancedBaseInstance",
  ["glDrawArraysInstancedBaseInstanceEXT"],
)

///|
extern "c" fn epoxy_glDrawArraysInstancedBaseInstance(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit = "epoxy_glDrawArraysInstancedBaseInstance"

///|
pub fn gl_draw_arrays_instanced_base_instance(
  mode : UInt,
  first : Int,
  count : Int,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit {
  epoxy_glDrawArraysInstancedBaseInstance(
    d_glDrawArraysInstancedBaseInstance.get(),
    mode,
    first,
    count,
    instancecount,
    baseinstance,
  )
}

///|
let d_glDrawArraysInstancedBaseInstanceEXT : Dispatch = Dispatch::with_aliases(
  "glDrawArraysInstancedBaseInstanceEXT",
  ["glDrawArraysInstancedBaseInstance"],
)

///|
extern "c" fn epoxy_glDrawArraysInstancedBaseInstanceEXT(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit = "epoxy_glDrawArraysInstancedBaseInstanceEXT"

///|
pub fn gl_draw_arrays_instanced_base_instance_ext(
  mode : UInt,
  first : Int,
  count : Int,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit {
  epoxy_glDrawArraysInstancedBaseInstanceEXT(
    d_glDrawArraysInstancedBaseInstanceEXT.get(),
    mode,
    first,
    count,
    instancecount,
    baseinstance,
  )
}

///|
let d_glDrawArraysInstancedEXT : Dispatch = Dispatch::with_aliases(
  "glDrawArraysInstancedEXT",
  [
    "glDrawArraysInstanced", "glDrawArraysInstancedANGLE", "glDrawArraysInstancedARB",
    "glDrawArraysInstancedNV",
  ],
)

///|
extern "c" fn epoxy_glDrawArraysInstancedEXT(
  fp : CPtr,
  mode : UInt,
  start : Int,
  count : Int,
  primcount : Int,
) -> Unit = "epoxy_glDrawArraysInstancedEXT"

///|
pub fn gl_draw_arrays_instanced_ext(
  mode : UInt,
  start : Int,
  count : Int,
  primcount : Int,
) -> Unit {
  epoxy_glDrawArraysInstancedEXT(
    d_glDrawArraysInstancedEXT.get(),
    mode,
    start,
    count,
    primcount,
  )
}

///|
let d_glDrawArraysInstancedNV : Dispatch = Dispatch::with_aliases(
  "glDrawArraysInstancedNV",
  [
    "glDrawArraysInstanced", "glDrawArraysInstancedANGLE", "glDrawArraysInstancedARB",
    "glDrawArraysInstancedEXT",
  ],
)

///|
extern "c" fn epoxy_glDrawArraysInstancedNV(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
  primcount : Int,
) -> Unit = "epoxy_glDrawArraysInstancedNV"

///|
pub fn gl_draw_arrays_instanced_nv(
  mode : UInt,
  first : Int,
  count : Int,
  primcount : Int,
) -> Unit {
  epoxy_glDrawArraysInstancedNV(
    d_glDrawArraysInstancedNV.get(),
    mode,
    first,
    count,
    primcount,
  )
}

///|
let d_glDrawBuffer : Dispatch = Dispatch::new("glDrawBuffer")

///|
extern "c" fn epoxy_glDrawBuffer(fp : CPtr, buf : UInt) -> Unit = "epoxy_glDrawBuffer"

///|
pub fn gl_draw_buffer(buf : UInt) -> Unit {
  epoxy_glDrawBuffer(d_glDrawBuffer.get(), buf)
}

///|
let d_glDrawBuffers : Dispatch = Dispatch::with_aliases("glDrawBuffers", [
  "glDrawBuffersARB", "glDrawBuffersATI", "glDrawBuffersEXT",
])

///|
#borrow(bufs)
extern "c" fn epoxy_glDrawBuffers(
  fp : CPtr,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit = "epoxy_glDrawBuffers"

///|
pub fn gl_draw_buffers(n : Int, bufs : FixedArray[UInt]) -> Unit {
  epoxy_glDrawBuffers(d_glDrawBuffers.get(), n, bufs)
}

///|
let d_glDrawBuffersARB : Dispatch = Dispatch::with_aliases("glDrawBuffersARB", [
  "glDrawBuffers", "glDrawBuffersATI", "glDrawBuffersEXT",
])

///|
#borrow(bufs)
extern "c" fn epoxy_glDrawBuffersARB(
  fp : CPtr,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit = "epoxy_glDrawBuffersARB"

///|
pub fn gl_draw_buffers_arb(n : Int, bufs : FixedArray[UInt]) -> Unit {
  epoxy_glDrawBuffersARB(d_glDrawBuffersARB.get(), n, bufs)
}

///|
let d_glDrawBuffersATI : Dispatch = Dispatch::with_aliases("glDrawBuffersATI", [
  "glDrawBuffers", "glDrawBuffersARB", "glDrawBuffersEXT",
])

///|
#borrow(bufs)
extern "c" fn epoxy_glDrawBuffersATI(
  fp : CPtr,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit = "epoxy_glDrawBuffersATI"

///|
pub fn gl_draw_buffers_ati(n : Int, bufs : FixedArray[UInt]) -> Unit {
  epoxy_glDrawBuffersATI(d_glDrawBuffersATI.get(), n, bufs)
}

///|
let d_glDrawBuffersEXT : Dispatch = Dispatch::with_aliases("glDrawBuffersEXT", [
  "glDrawBuffers", "glDrawBuffersARB", "glDrawBuffersATI",
])

///|
#borrow(bufs)
extern "c" fn epoxy_glDrawBuffersEXT(
  fp : CPtr,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit = "epoxy_glDrawBuffersEXT"

///|
pub fn gl_draw_buffers_ext(n : Int, bufs : FixedArray[UInt]) -> Unit {
  epoxy_glDrawBuffersEXT(d_glDrawBuffersEXT.get(), n, bufs)
}

///|
let d_glDrawBuffersIndexedEXT : Dispatch = Dispatch::new(
  "glDrawBuffersIndexedEXT",
)

///|
#borrow(location, indices)
extern "c" fn epoxy_glDrawBuffersIndexedEXT(
  fp : CPtr,
  n : Int,
  location : FixedArray[UInt],
  indices : FixedArray[Int],
) -> Unit = "epoxy_glDrawBuffersIndexedEXT"

///|
pub fn gl_draw_buffers_indexed_ext(
  n : Int,
  location : FixedArray[UInt],
  indices : FixedArray[Int],
) -> Unit {
  epoxy_glDrawBuffersIndexedEXT(
    d_glDrawBuffersIndexedEXT.get(),
    n,
    location,
    indices,
  )
}

///|
let d_glDrawBuffersNV : Dispatch = Dispatch::new("glDrawBuffersNV")

///|
#borrow(bufs)
extern "c" fn epoxy_glDrawBuffersNV(
  fp : CPtr,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit = "epoxy_glDrawBuffersNV"

///|
pub fn gl_draw_buffers_nv(n : Int, bufs : FixedArray[UInt]) -> Unit {
  epoxy_glDrawBuffersNV(d_glDrawBuffersNV.get(), n, bufs)
}

///|
let d_glDrawCommandsAddressNV : Dispatch = Dispatch::new(
  "glDrawCommandsAddressNV",
)

///|
#borrow(indirects, sizes)
extern "c" fn epoxy_glDrawCommandsAddressNV(
  fp : CPtr,
  primitiveMode : UInt,
  indirects : FixedArray[UInt64],
  sizes : FixedArray[Int],
  count : UInt,
) -> Unit = "epoxy_glDrawCommandsAddressNV"

///|
pub fn gl_draw_commands_address_nv(
  primitiveMode : UInt,
  indirects : FixedArray[UInt64],
  sizes : FixedArray[Int],
  count : UInt,
) -> Unit {
  epoxy_glDrawCommandsAddressNV(
    d_glDrawCommandsAddressNV.get(),
    primitiveMode,
    indirects,
    sizes,
    count,
  )
}

///|
let d_glDrawCommandsStatesAddressNV : Dispatch = Dispatch::new(
  "glDrawCommandsStatesAddressNV",
)

///|
#borrow(indirects, sizes, states, fbos)
extern "c" fn epoxy_glDrawCommandsStatesAddressNV(
  fp : CPtr,
  indirects : FixedArray[UInt64],
  sizes : FixedArray[Int],
  states : FixedArray[UInt],
  fbos : FixedArray[UInt],
  count : UInt,
) -> Unit = "epoxy_glDrawCommandsStatesAddressNV"

///|
pub fn gl_draw_commands_states_address_nv(
  indirects : FixedArray[UInt64],
  sizes : FixedArray[Int],
  states : FixedArray[UInt],
  fbos : FixedArray[UInt],
  count : UInt,
) -> Unit {
  epoxy_glDrawCommandsStatesAddressNV(
    d_glDrawCommandsStatesAddressNV.get(),
    indirects,
    sizes,
    states,
    fbos,
    count,
  )
}

///|
let d_glDrawElementArrayAPPLE : Dispatch = Dispatch::new(
  "glDrawElementArrayAPPLE",
)

///|
extern "c" fn epoxy_glDrawElementArrayAPPLE(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
) -> Unit = "epoxy_glDrawElementArrayAPPLE"

///|
pub fn gl_draw_element_array_apple(
  mode : UInt,
  first : Int,
  count : Int,
) -> Unit {
  epoxy_glDrawElementArrayAPPLE(
    d_glDrawElementArrayAPPLE.get(),
    mode,
    first,
    count,
  )
}

///|
let d_glDrawElementArrayATI : Dispatch = Dispatch::new("glDrawElementArrayATI")

///|
extern "c" fn epoxy_glDrawElementArrayATI(
  fp : CPtr,
  mode : UInt,
  count : Int,
) -> Unit = "epoxy_glDrawElementArrayATI"

///|
pub fn gl_draw_element_array_ati(mode : UInt, count : Int) -> Unit {
  epoxy_glDrawElementArrayATI(d_glDrawElementArrayATI.get(), mode, count)
}

///|
let d_glDrawElements : Dispatch = Dispatch::new("glDrawElements")

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElements(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
) -> Unit = "epoxy_glDrawElements"

///|
pub fn gl_draw_elements(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
) -> Unit {
  epoxy_glDrawElements(d_glDrawElements.get(), mode, count, type_, indices)
}

///|
let d_glDrawElementsBaseVertex : Dispatch = Dispatch::with_aliases(
  "glDrawElementsBaseVertex",
  ["glDrawElementsBaseVertexEXT", "glDrawElementsBaseVertexOES"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsBaseVertex(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit = "epoxy_glDrawElementsBaseVertex"

///|
pub fn gl_draw_elements_base_vertex(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawElementsBaseVertex(
    d_glDrawElementsBaseVertex.get(),
    mode,
    count,
    type_,
    indices,
    basevertex,
  )
}

///|
let d_glDrawElementsBaseVertexEXT : Dispatch = Dispatch::with_aliases(
  "glDrawElementsBaseVertexEXT",
  ["glDrawElementsBaseVertex", "glDrawElementsBaseVertexOES"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsBaseVertexEXT(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit = "epoxy_glDrawElementsBaseVertexEXT"

///|
pub fn gl_draw_elements_base_vertex_ext(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawElementsBaseVertexEXT(
    d_glDrawElementsBaseVertexEXT.get(),
    mode,
    count,
    type_,
    indices,
    basevertex,
  )
}

///|
let d_glDrawElementsBaseVertexOES : Dispatch = Dispatch::with_aliases(
  "glDrawElementsBaseVertexOES",
  ["glDrawElementsBaseVertex", "glDrawElementsBaseVertexEXT"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsBaseVertexOES(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit = "epoxy_glDrawElementsBaseVertexOES"

///|
pub fn gl_draw_elements_base_vertex_oes(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawElementsBaseVertexOES(
    d_glDrawElementsBaseVertexOES.get(),
    mode,
    count,
    type_,
    indices,
    basevertex,
  )
}

///|
let d_glDrawElementsIndirect : Dispatch = Dispatch::new(
  "glDrawElementsIndirect",
)

///|
#borrow(indirect)
extern "c" fn epoxy_glDrawElementsIndirect(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
) -> Unit = "epoxy_glDrawElementsIndirect"

///|
pub fn gl_draw_elements_indirect(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
) -> Unit {
  epoxy_glDrawElementsIndirect(
    d_glDrawElementsIndirect.get(),
    mode,
    type_,
    indirect,
  )
}

///|
let d_glDrawElementsInstanced : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstanced",
  [
    "glDrawElementsInstancedANGLE", "glDrawElementsInstancedARB", "glDrawElementsInstancedEXT",
    "glDrawElementsInstancedNV",
  ],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstanced(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
) -> Unit = "epoxy_glDrawElementsInstanced"

///|
pub fn gl_draw_elements_instanced(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
) -> Unit {
  epoxy_glDrawElementsInstanced(
    d_glDrawElementsInstanced.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
  )
}

///|
let d_glDrawElementsInstancedANGLE : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedANGLE",
  [
    "glDrawElementsInstanced", "glDrawElementsInstancedARB", "glDrawElementsInstancedEXT",
    "glDrawElementsInstancedNV",
  ],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedANGLE(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit = "epoxy_glDrawElementsInstancedANGLE"

///|
pub fn gl_draw_elements_instanced_angle(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit {
  epoxy_glDrawElementsInstancedANGLE(
    d_glDrawElementsInstancedANGLE.get(),
    mode,
    count,
    type_,
    indices,
    primcount,
  )
}

///|
let d_glDrawElementsInstancedARB : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedARB",
  [
    "glDrawElementsInstanced", "glDrawElementsInstancedANGLE", "glDrawElementsInstancedEXT",
    "glDrawElementsInstancedNV",
  ],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedARB(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit = "epoxy_glDrawElementsInstancedARB"

///|
pub fn gl_draw_elements_instanced_arb(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit {
  epoxy_glDrawElementsInstancedARB(
    d_glDrawElementsInstancedARB.get(),
    mode,
    count,
    type_,
    indices,
    primcount,
  )
}

///|
let d_glDrawElementsInstancedBaseInstance : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedBaseInstance",
  ["glDrawElementsInstancedBaseInstanceEXT"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedBaseInstance(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit = "epoxy_glDrawElementsInstancedBaseInstance"

///|
pub fn gl_draw_elements_instanced_base_instance(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit {
  epoxy_glDrawElementsInstancedBaseInstance(
    d_glDrawElementsInstancedBaseInstance.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
    baseinstance,
  )
}

///|
let d_glDrawElementsInstancedBaseInstanceEXT : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedBaseInstanceEXT",
  ["glDrawElementsInstancedBaseInstance"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedBaseInstanceEXT(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit = "epoxy_glDrawElementsInstancedBaseInstanceEXT"

///|
pub fn gl_draw_elements_instanced_base_instance_ext(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  baseinstance : UInt,
) -> Unit {
  epoxy_glDrawElementsInstancedBaseInstanceEXT(
    d_glDrawElementsInstancedBaseInstanceEXT.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
    baseinstance,
  )
}

///|
let d_glDrawElementsInstancedBaseVertex : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedBaseVertex",
  [
    "glDrawElementsInstancedBaseVertexEXT", "glDrawElementsInstancedBaseVertexOES",
  ],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedBaseVertex(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
) -> Unit = "epoxy_glDrawElementsInstancedBaseVertex"

///|
pub fn gl_draw_elements_instanced_base_vertex(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawElementsInstancedBaseVertex(
    d_glDrawElementsInstancedBaseVertex.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
    basevertex,
  )
}

///|
let d_glDrawElementsInstancedBaseVertexBaseInstance : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedBaseVertexBaseInstance",
  ["glDrawElementsInstancedBaseVertexBaseInstanceEXT"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedBaseVertexBaseInstance(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
  baseinstance : UInt,
) -> Unit = "epoxy_glDrawElementsInstancedBaseVertexBaseInstance"

///|
pub fn gl_draw_elements_instanced_base_vertex_base_instance(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
  baseinstance : UInt,
) -> Unit {
  epoxy_glDrawElementsInstancedBaseVertexBaseInstance(
    d_glDrawElementsInstancedBaseVertexBaseInstance.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
    basevertex,
    baseinstance,
  )
}

///|
let d_glDrawElementsInstancedBaseVertexBaseInstanceEXT : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedBaseVertexBaseInstanceEXT",
  ["glDrawElementsInstancedBaseVertexBaseInstance"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedBaseVertexBaseInstanceEXT(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
  baseinstance : UInt,
) -> Unit = "epoxy_glDrawElementsInstancedBaseVertexBaseInstanceEXT"

///|
pub fn gl_draw_elements_instanced_base_vertex_base_instance_ext(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
  baseinstance : UInt,
) -> Unit {
  epoxy_glDrawElementsInstancedBaseVertexBaseInstanceEXT(
    d_glDrawElementsInstancedBaseVertexBaseInstanceEXT.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
    basevertex,
    baseinstance,
  )
}

///|
let d_glDrawElementsInstancedBaseVertexEXT : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedBaseVertexEXT",
  ["glDrawElementsInstancedBaseVertex", "glDrawElementsInstancedBaseVertexOES"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedBaseVertexEXT(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
) -> Unit = "epoxy_glDrawElementsInstancedBaseVertexEXT"

///|
pub fn gl_draw_elements_instanced_base_vertex_ext(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawElementsInstancedBaseVertexEXT(
    d_glDrawElementsInstancedBaseVertexEXT.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
    basevertex,
  )
}

///|
let d_glDrawElementsInstancedBaseVertexOES : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedBaseVertexOES",
  ["glDrawElementsInstancedBaseVertex", "glDrawElementsInstancedBaseVertexEXT"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedBaseVertexOES(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
) -> Unit = "epoxy_glDrawElementsInstancedBaseVertexOES"

///|
pub fn gl_draw_elements_instanced_base_vertex_oes(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  instancecount : Int,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawElementsInstancedBaseVertexOES(
    d_glDrawElementsInstancedBaseVertexOES.get(),
    mode,
    count,
    type_,
    indices,
    instancecount,
    basevertex,
  )
}

///|
let d_glDrawElementsInstancedEXT : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedEXT",
  [
    "glDrawElementsInstanced", "glDrawElementsInstancedANGLE", "glDrawElementsInstancedARB",
    "glDrawElementsInstancedNV",
  ],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedEXT(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit = "epoxy_glDrawElementsInstancedEXT"

///|
pub fn gl_draw_elements_instanced_ext(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit {
  epoxy_glDrawElementsInstancedEXT(
    d_glDrawElementsInstancedEXT.get(),
    mode,
    count,
    type_,
    indices,
    primcount,
  )
}

///|
let d_glDrawElementsInstancedNV : Dispatch = Dispatch::with_aliases(
  "glDrawElementsInstancedNV",
  [
    "glDrawElementsInstanced", "glDrawElementsInstancedANGLE", "glDrawElementsInstancedARB",
    "glDrawElementsInstancedEXT",
  ],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawElementsInstancedNV(
  fp : CPtr,
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit = "epoxy_glDrawElementsInstancedNV"

///|
pub fn gl_draw_elements_instanced_nv(
  mode : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  primcount : Int,
) -> Unit {
  epoxy_glDrawElementsInstancedNV(
    d_glDrawElementsInstancedNV.get(),
    mode,
    count,
    type_,
    indices,
    primcount,
  )
}

///|
let d_glDrawMeshArraysSUN : Dispatch = Dispatch::new("glDrawMeshArraysSUN")

///|
extern "c" fn epoxy_glDrawMeshArraysSUN(
  fp : CPtr,
  mode : UInt,
  first : Int,
  count : Int,
  width : Int,
) -> Unit = "epoxy_glDrawMeshArraysSUN"

///|
pub fn gl_draw_mesh_arrays_sun(
  mode : UInt,
  first : Int,
  count : Int,
  width : Int,
) -> Unit {
  epoxy_glDrawMeshArraysSUN(
    d_glDrawMeshArraysSUN.get(),
    mode,
    first,
    count,
    width,
  )
}

///|
let d_glDrawMeshTasksEXT : Dispatch = Dispatch::new("glDrawMeshTasksEXT")

///|
extern "c" fn epoxy_glDrawMeshTasksEXT(
  fp : CPtr,
  num_groups_x : UInt,
  num_groups_y : UInt,
  num_groups_z : UInt,
) -> Unit = "epoxy_glDrawMeshTasksEXT"

///|
pub fn gl_draw_mesh_tasks_ext(
  num_groups_x : UInt,
  num_groups_y : UInt,
  num_groups_z : UInt,
) -> Unit {
  epoxy_glDrawMeshTasksEXT(
    d_glDrawMeshTasksEXT.get(),
    num_groups_x,
    num_groups_y,
    num_groups_z,
  )
}

///|
let d_glDrawMeshTasksNV : Dispatch = Dispatch::new("glDrawMeshTasksNV")

///|
extern "c" fn epoxy_glDrawMeshTasksNV(
  fp : CPtr,
  first : UInt,
  count : UInt,
) -> Unit = "epoxy_glDrawMeshTasksNV"

///|
pub fn gl_draw_mesh_tasks_nv(first : UInt, count : UInt) -> Unit {
  epoxy_glDrawMeshTasksNV(d_glDrawMeshTasksNV.get(), first, count)
}

///|
let d_glDrawMeshTasksIndirectEXT : Dispatch = Dispatch::new(
  "glDrawMeshTasksIndirectEXT",
)

///|
extern "c" fn epoxy_glDrawMeshTasksIndirectEXT(
  fp : CPtr,
  indirect : Int64,
) -> Unit = "epoxy_glDrawMeshTasksIndirectEXT"

///|
pub fn gl_draw_mesh_tasks_indirect_ext(indirect : Int64) -> Unit {
  epoxy_glDrawMeshTasksIndirectEXT(d_glDrawMeshTasksIndirectEXT.get(), indirect)
}

///|
let d_glDrawMeshTasksIndirectNV : Dispatch = Dispatch::new(
  "glDrawMeshTasksIndirectNV",
)

///|
extern "c" fn epoxy_glDrawMeshTasksIndirectNV(
  fp : CPtr,
  indirect : Int64,
) -> Unit = "epoxy_glDrawMeshTasksIndirectNV"

///|
pub fn gl_draw_mesh_tasks_indirect_nv(indirect : Int64) -> Unit {
  epoxy_glDrawMeshTasksIndirectNV(d_glDrawMeshTasksIndirectNV.get(), indirect)
}

///|
let d_glDrawPixels : Dispatch = Dispatch::new("glDrawPixels")

///|
#borrow(pixels)
extern "c" fn epoxy_glDrawPixels(
  fp : CPtr,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glDrawPixels"

///|
pub fn gl_draw_pixels(
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glDrawPixels(d_glDrawPixels.get(), width, height, format, type_, pixels)
}

///|
let d_glDrawRangeElementArrayAPPLE : Dispatch = Dispatch::new(
  "glDrawRangeElementArrayAPPLE",
)

///|
extern "c" fn epoxy_glDrawRangeElementArrayAPPLE(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  first : Int,
  count : Int,
) -> Unit = "epoxy_glDrawRangeElementArrayAPPLE"

///|
pub fn gl_draw_range_element_array_apple(
  mode : UInt,
  start : UInt,
  end : UInt,
  first : Int,
  count : Int,
) -> Unit {
  epoxy_glDrawRangeElementArrayAPPLE(
    d_glDrawRangeElementArrayAPPLE.get(),
    mode,
    start,
    end,
    first,
    count,
  )
}

///|
let d_glDrawRangeElementArrayATI : Dispatch = Dispatch::new(
  "glDrawRangeElementArrayATI",
)

///|
extern "c" fn epoxy_glDrawRangeElementArrayATI(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
) -> Unit = "epoxy_glDrawRangeElementArrayATI"

///|
pub fn gl_draw_range_element_array_ati(
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
) -> Unit {
  epoxy_glDrawRangeElementArrayATI(
    d_glDrawRangeElementArrayATI.get(),
    mode,
    start,
    end,
    count,
  )
}

///|
let d_glDrawRangeElements : Dispatch = Dispatch::with_aliases(
  "glDrawRangeElements",
  ["glDrawRangeElementsEXT"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawRangeElements(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
) -> Unit = "epoxy_glDrawRangeElements"

///|
pub fn gl_draw_range_elements(
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
) -> Unit {
  epoxy_glDrawRangeElements(
    d_glDrawRangeElements.get(),
    mode,
    start,
    end,
    count,
    type_,
    indices,
  )
}

///|
let d_glDrawRangeElementsBaseVertex : Dispatch = Dispatch::with_aliases(
  "glDrawRangeElementsBaseVertex",
  ["glDrawRangeElementsBaseVertexEXT", "glDrawRangeElementsBaseVertexOES"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawRangeElementsBaseVertex(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit = "epoxy_glDrawRangeElementsBaseVertex"

///|
pub fn gl_draw_range_elements_base_vertex(
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawRangeElementsBaseVertex(
    d_glDrawRangeElementsBaseVertex.get(),
    mode,
    start,
    end,
    count,
    type_,
    indices,
    basevertex,
  )
}

///|
let d_glDrawRangeElementsBaseVertexEXT : Dispatch = Dispatch::with_aliases(
  "glDrawRangeElementsBaseVertexEXT",
  ["glDrawRangeElementsBaseVertex", "glDrawRangeElementsBaseVertexOES"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawRangeElementsBaseVertexEXT(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit = "epoxy_glDrawRangeElementsBaseVertexEXT"

///|
pub fn gl_draw_range_elements_base_vertex_ext(
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawRangeElementsBaseVertexEXT(
    d_glDrawRangeElementsBaseVertexEXT.get(),
    mode,
    start,
    end,
    count,
    type_,
    indices,
    basevertex,
  )
}

///|
let d_glDrawRangeElementsBaseVertexOES : Dispatch = Dispatch::with_aliases(
  "glDrawRangeElementsBaseVertexOES",
  ["glDrawRangeElementsBaseVertex", "glDrawRangeElementsBaseVertexEXT"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawRangeElementsBaseVertexOES(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit = "epoxy_glDrawRangeElementsBaseVertexOES"

///|
pub fn gl_draw_range_elements_base_vertex_oes(
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
  basevertex : Int,
) -> Unit {
  epoxy_glDrawRangeElementsBaseVertexOES(
    d_glDrawRangeElementsBaseVertexOES.get(),
    mode,
    start,
    end,
    count,
    type_,
    indices,
    basevertex,
  )
}

///|
let d_glDrawRangeElementsEXT : Dispatch = Dispatch::with_aliases(
  "glDrawRangeElementsEXT",
  ["glDrawRangeElements"],
)

///|
#borrow(indices)
extern "c" fn epoxy_glDrawRangeElementsEXT(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
) -> Unit = "epoxy_glDrawRangeElementsEXT"

///|
pub fn gl_draw_range_elements_ext(
  mode : UInt,
  start : UInt,
  end : UInt,
  count : Int,
  type_ : UInt,
  indices : Bytes,
) -> Unit {
  epoxy_glDrawRangeElementsEXT(
    d_glDrawRangeElementsEXT.get(),
    mode,
    start,
    end,
    count,
    type_,
    indices,
  )
}

///|
let d_glDrawTexfOES : Dispatch = Dispatch::new("glDrawTexfOES")

///|
extern "c" fn epoxy_glDrawTexfOES(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
  width : Float,
  height : Float,
) -> Unit = "epoxy_glDrawTexfOES"

///|
pub fn gl_draw_texf_oes(
  x : Float,
  y : Float,
  z : Float,
  width : Float,
  height : Float,
) -> Unit {
  epoxy_glDrawTexfOES(d_glDrawTexfOES.get(), x, y, z, width, height)
}

///|
let d_glDrawTexfvOES : Dispatch = Dispatch::new("glDrawTexfvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glDrawTexfvOES(
  fp : CPtr,
  coords : FixedArray[Float],
) -> Unit = "epoxy_glDrawTexfvOES"

///|
pub fn gl_draw_texfv_oes(coords : FixedArray[Float]) -> Unit {
  epoxy_glDrawTexfvOES(d_glDrawTexfvOES.get(), coords)
}

///|
let d_glDrawTexiOES : Dispatch = Dispatch::new("glDrawTexiOES")

///|
extern "c" fn epoxy_glDrawTexiOES(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glDrawTexiOES"

///|
pub fn gl_draw_texi_oes(
  x : Int,
  y : Int,
  z : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glDrawTexiOES(d_glDrawTexiOES.get(), x, y, z, width, height)
}

///|
let d_glDrawTexivOES : Dispatch = Dispatch::new("glDrawTexivOES")

///|
#borrow(coords)
extern "c" fn epoxy_glDrawTexivOES(fp : CPtr, coords : FixedArray[Int]) -> Unit = "epoxy_glDrawTexivOES"

///|
pub fn gl_draw_texiv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glDrawTexivOES(d_glDrawTexivOES.get(), coords)
}

///|
let d_glDrawTexsOES : Dispatch = Dispatch::new("glDrawTexsOES")

///|
extern "c" fn epoxy_glDrawTexsOES(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glDrawTexsOES"

///|
pub fn gl_draw_texs_oes(
  x : Int,
  y : Int,
  z : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glDrawTexsOES(d_glDrawTexsOES.get(), x, y, z, width, height)
}

///|
let d_glDrawTexsvOES : Dispatch = Dispatch::new("glDrawTexsvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glDrawTexsvOES(
  fp : CPtr,
  coords : FixedArray[Int16],
) -> Unit = "epoxy_glDrawTexsvOES"

///|
pub fn gl_draw_texsv_oes(coords : FixedArray[Int16]) -> Unit {
  epoxy_glDrawTexsvOES(d_glDrawTexsvOES.get(), coords)
}

///|
let d_glDrawTextureNV : Dispatch = Dispatch::new("glDrawTextureNV")

///|
extern "c" fn epoxy_glDrawTextureNV(
  fp : CPtr,
  texture : UInt,
  sampler : UInt,
  x0 : Float,
  y0 : Float,
  x1 : Float,
  y1 : Float,
  z : Float,
  s0 : Float,
  t0 : Float,
  s1 : Float,
  t1 : Float,
) -> Unit = "epoxy_glDrawTextureNV"

///|
pub fn gl_draw_texture_nv(
  texture : UInt,
  sampler : UInt,
  x0 : Float,
  y0 : Float,
  x1 : Float,
  y1 : Float,
  z : Float,
  s0 : Float,
  t0 : Float,
  s1 : Float,
  t1 : Float,
) -> Unit {
  epoxy_glDrawTextureNV(
    d_glDrawTextureNV.get(),
    texture,
    sampler,
    x0,
    y0,
    x1,
    y1,
    z,
    s0,
    t0,
    s1,
    t1,
  )
}

///|
let d_glDrawTexxOES : Dispatch = Dispatch::new("glDrawTexxOES")

///|
extern "c" fn epoxy_glDrawTexxOES(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glDrawTexxOES"

///|
pub fn gl_draw_texx_oes(
  x : Int,
  y : Int,
  z : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glDrawTexxOES(d_glDrawTexxOES.get(), x, y, z, width, height)
}

///|
let d_glDrawTexxvOES : Dispatch = Dispatch::new("glDrawTexxvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glDrawTexxvOES(fp : CPtr, coords : FixedArray[Int]) -> Unit = "epoxy_glDrawTexxvOES"

///|
pub fn gl_draw_texxv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glDrawTexxvOES(d_glDrawTexxvOES.get(), coords)
}

///|
let d_glDrawTransformFeedback : Dispatch = Dispatch::with_aliases(
  "glDrawTransformFeedback",
  ["glDrawTransformFeedbackEXT", "glDrawTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glDrawTransformFeedback(
  fp : CPtr,
  mode : UInt,
  id : UInt,
) -> Unit = "epoxy_glDrawTransformFeedback"

///|
pub fn gl_draw_transform_feedback(mode : UInt, id : UInt) -> Unit {
  epoxy_glDrawTransformFeedback(d_glDrawTransformFeedback.get(), mode, id)
}

///|
let d_glDrawTransformFeedbackEXT : Dispatch = Dispatch::with_aliases(
  "glDrawTransformFeedbackEXT",
  ["glDrawTransformFeedback", "glDrawTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glDrawTransformFeedbackEXT(
  fp : CPtr,
  mode : UInt,
  id : UInt,
) -> Unit = "epoxy_glDrawTransformFeedbackEXT"

///|
pub fn gl_draw_transform_feedback_ext(mode : UInt, id : UInt) -> Unit {
  epoxy_glDrawTransformFeedbackEXT(d_glDrawTransformFeedbackEXT.get(), mode, id)
}

///|
let d_glDrawTransformFeedbackInstanced : Dispatch = Dispatch::with_aliases(
  "glDrawTransformFeedbackInstanced",
  ["glDrawTransformFeedbackInstancedEXT"],
)

///|
extern "c" fn epoxy_glDrawTransformFeedbackInstanced(
  fp : CPtr,
  mode : UInt,
  id : UInt,
  instancecount : Int,
) -> Unit = "epoxy_glDrawTransformFeedbackInstanced"

///|
pub fn gl_draw_transform_feedback_instanced(
  mode : UInt,
  id : UInt,
  instancecount : Int,
) -> Unit {
  epoxy_glDrawTransformFeedbackInstanced(
    d_glDrawTransformFeedbackInstanced.get(),
    mode,
    id,
    instancecount,
  )
}

///|
let d_glDrawTransformFeedbackInstancedEXT : Dispatch = Dispatch::with_aliases(
  "glDrawTransformFeedbackInstancedEXT",
  ["glDrawTransformFeedbackInstanced"],
)

///|
extern "c" fn epoxy_glDrawTransformFeedbackInstancedEXT(
  fp : CPtr,
  mode : UInt,
  id : UInt,
  instancecount : Int,
) -> Unit = "epoxy_glDrawTransformFeedbackInstancedEXT"

///|
pub fn gl_draw_transform_feedback_instanced_ext(
  mode : UInt,
  id : UInt,
  instancecount : Int,
) -> Unit {
  epoxy_glDrawTransformFeedbackInstancedEXT(
    d_glDrawTransformFeedbackInstancedEXT.get(),
    mode,
    id,
    instancecount,
  )
}

///|
let d_glDrawTransformFeedbackNV : Dispatch = Dispatch::with_aliases(
  "glDrawTransformFeedbackNV",
  ["glDrawTransformFeedback", "glDrawTransformFeedbackEXT"],
)

///|
extern "c" fn epoxy_glDrawTransformFeedbackNV(
  fp : CPtr,
  mode : UInt,
  id : UInt,
) -> Unit = "epoxy_glDrawTransformFeedbackNV"

///|
pub fn gl_draw_transform_feedback_nv(mode : UInt, id : UInt) -> Unit {
  epoxy_glDrawTransformFeedbackNV(d_glDrawTransformFeedbackNV.get(), mode, id)
}

///|
let d_glDrawTransformFeedbackStream : Dispatch = Dispatch::new(
  "glDrawTransformFeedbackStream",
)

///|
extern "c" fn epoxy_glDrawTransformFeedbackStream(
  fp : CPtr,
  mode : UInt,
  id : UInt,
  stream : UInt,
) -> Unit = "epoxy_glDrawTransformFeedbackStream"

///|
pub fn gl_draw_transform_feedback_stream(
  mode : UInt,
  id : UInt,
  stream : UInt,
) -> Unit {
  epoxy_glDrawTransformFeedbackStream(
    d_glDrawTransformFeedbackStream.get(),
    mode,
    id,
    stream,
  )
}

///|
let d_glDrawTransformFeedbackStreamInstanced : Dispatch = Dispatch::new(
  "glDrawTransformFeedbackStreamInstanced",
)

///|
extern "c" fn epoxy_glDrawTransformFeedbackStreamInstanced(
  fp : CPtr,
  mode : UInt,
  id : UInt,
  stream : UInt,
  instancecount : Int,
) -> Unit = "epoxy_glDrawTransformFeedbackStreamInstanced"

///|
pub fn gl_draw_transform_feedback_stream_instanced(
  mode : UInt,
  id : UInt,
  stream : UInt,
  instancecount : Int,
) -> Unit {
  epoxy_glDrawTransformFeedbackStreamInstanced(
    d_glDrawTransformFeedbackStreamInstanced.get(),
    mode,
    id,
    stream,
    instancecount,
  )
}

///|
let d_glEGLImageTargetRenderbufferStorageOES : Dispatch = Dispatch::new(
  "glEGLImageTargetRenderbufferStorageOES",
)

///|
extern "c" fn epoxy_glEGLImageTargetRenderbufferStorageOES(
  fp : CPtr,
  target : UInt,
  image : GLeglImageOES,
) -> Unit = "epoxy_glEGLImageTargetRenderbufferStorageOES"

///|
pub fn gl_egl_image_target_renderbuffer_storage_oes(
  target : UInt,
  image : GLeglImageOES,
) -> Unit {
  epoxy_glEGLImageTargetRenderbufferStorageOES(
    d_glEGLImageTargetRenderbufferStorageOES.get(),
    target,
    image,
  )
}

///|
let d_glEGLImageTargetTexStorageEXT : Dispatch = Dispatch::new(
  "glEGLImageTargetTexStorageEXT",
)

///|
#borrow(attrib_list)
extern "c" fn epoxy_glEGLImageTargetTexStorageEXT(
  fp : CPtr,
  target : UInt,
  image : GLeglImageOES,
  attrib_list : FixedArray[Int],
) -> Unit = "epoxy_glEGLImageTargetTexStorageEXT"

///|
pub fn gl_egl_image_target_tex_storage_ext(
  target : UInt,
  image : GLeglImageOES,
  attrib_list : FixedArray[Int],
) -> Unit {
  epoxy_glEGLImageTargetTexStorageEXT(
    d_glEGLImageTargetTexStorageEXT.get(),
    target,
    image,
    attrib_list,
  )
}

///|
let d_glEGLImageTargetTexture2DOES : Dispatch = Dispatch::new(
  "glEGLImageTargetTexture2DOES",
)

///|
extern "c" fn epoxy_glEGLImageTargetTexture2DOES(
  fp : CPtr,
  target : UInt,
  image : GLeglImageOES,
) -> Unit = "epoxy_glEGLImageTargetTexture2DOES"

///|
pub fn gl_egl_image_target_texture2_does(
  target : UInt,
  image : GLeglImageOES,
) -> Unit {
  epoxy_glEGLImageTargetTexture2DOES(
    d_glEGLImageTargetTexture2DOES.get(),
    target,
    image,
  )
}

///|
let d_glEGLImageTargetTextureStorageEXT : Dispatch = Dispatch::new(
  "glEGLImageTargetTextureStorageEXT",
)

///|
#borrow(attrib_list)
extern "c" fn epoxy_glEGLImageTargetTextureStorageEXT(
  fp : CPtr,
  texture : UInt,
  image : GLeglImageOES,
  attrib_list : FixedArray[Int],
) -> Unit = "epoxy_glEGLImageTargetTextureStorageEXT"

///|
pub fn gl_egl_image_target_texture_storage_ext(
  texture : UInt,
  image : GLeglImageOES,
  attrib_list : FixedArray[Int],
) -> Unit {
  epoxy_glEGLImageTargetTextureStorageEXT(
    d_glEGLImageTargetTextureStorageEXT.get(),
    texture,
    image,
    attrib_list,
  )
}

///|
let d_glEdgeFlag : Dispatch = Dispatch::new("glEdgeFlag")

///|
extern "c" fn epoxy_glEdgeFlag(fp : CPtr, flag : Bool) -> Unit = "epoxy_glEdgeFlag"

///|
pub fn gl_edge_flag(flag : Bool) -> Unit {
  epoxy_glEdgeFlag(d_glEdgeFlag.get(), flag)
}

///|
let d_glEdgeFlagFormatNV : Dispatch = Dispatch::new("glEdgeFlagFormatNV")

///|
extern "c" fn epoxy_glEdgeFlagFormatNV(fp : CPtr, stride : Int) -> Unit = "epoxy_glEdgeFlagFormatNV"

///|
pub fn gl_edge_flag_format_nv(stride : Int) -> Unit {
  epoxy_glEdgeFlagFormatNV(d_glEdgeFlagFormatNV.get(), stride)
}

///|
let d_glEdgeFlagPointer : Dispatch = Dispatch::new("glEdgeFlagPointer")

///|
#borrow(pointer)
extern "c" fn epoxy_glEdgeFlagPointer(
  fp : CPtr,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glEdgeFlagPointer"

///|
pub fn gl_edge_flag_pointer(stride : Int, pointer : Bytes) -> Unit {
  epoxy_glEdgeFlagPointer(d_glEdgeFlagPointer.get(), stride, pointer)
}

///|
let d_glEdgeFlagPointerEXT : Dispatch = Dispatch::new("glEdgeFlagPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glEdgeFlagPointerEXT(
  fp : CPtr,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glEdgeFlagPointerEXT"

///|
pub fn gl_edge_flag_pointer_ext(
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glEdgeFlagPointerEXT(
    d_glEdgeFlagPointerEXT.get(),
    stride,
    count,
    pointer,
  )
}

///|
let d_glEdgeFlagPointerListIBM : Dispatch = Dispatch::new(
  "glEdgeFlagPointerListIBM",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glEdgeFlagPointerListIBM(
  fp : CPtr,
  stride : Int,
  pointer : FixedArray[Bytes],
  ptrstride : Int,
) -> Unit = "epoxy_glEdgeFlagPointerListIBM"

///|
pub fn gl_edge_flag_pointer_list_ibm(
  stride : Int,
  pointer : FixedArray[Bytes],
  ptrstride : Int,
) -> Unit {
  epoxy_glEdgeFlagPointerListIBM(
    d_glEdgeFlagPointerListIBM.get(),
    stride,
    pointer,
    ptrstride,
  )
}

///|
let d_glEdgeFlagv : Dispatch = Dispatch::new("glEdgeFlagv")

///|
#borrow(flag)
extern "c" fn epoxy_glEdgeFlagv(fp : CPtr, flag : Bytes) -> Unit = "epoxy_glEdgeFlagv"

///|
pub fn gl_edge_flagv(flag : Bytes) -> Unit {
  epoxy_glEdgeFlagv(d_glEdgeFlagv.get(), flag)
}

///|
let d_glElementPointerAPPLE : Dispatch = Dispatch::new("glElementPointerAPPLE")

///|
#borrow(pointer)
extern "c" fn epoxy_glElementPointerAPPLE(
  fp : CPtr,
  type_ : UInt,
  pointer : Bytes,
) -> Unit = "epoxy_glElementPointerAPPLE"

///|
pub fn gl_element_pointer_apple(type_ : UInt, pointer : Bytes) -> Unit {
  epoxy_glElementPointerAPPLE(d_glElementPointerAPPLE.get(), type_, pointer)
}

///|
let d_glElementPointerATI : Dispatch = Dispatch::new("glElementPointerATI")

///|
#borrow(pointer)
extern "c" fn epoxy_glElementPointerATI(
  fp : CPtr,
  type_ : UInt,
  pointer : Bytes,
) -> Unit = "epoxy_glElementPointerATI"

///|
pub fn gl_element_pointer_ati(type_ : UInt, pointer : Bytes) -> Unit {
  epoxy_glElementPointerATI(d_glElementPointerATI.get(), type_, pointer)
}

///|
let d_glEnable : Dispatch = Dispatch::new("glEnable")

///|
extern "c" fn epoxy_glEnable(fp : CPtr, cap : UInt) -> Unit = "epoxy_glEnable"

///|
pub fn gl_enable(cap : UInt) -> Unit {
  epoxy_glEnable(d_glEnable.get(), cap)
}

///|
let d_glEnableClientState : Dispatch = Dispatch::new("glEnableClientState")

///|
extern "c" fn epoxy_glEnableClientState(fp : CPtr, array : UInt) -> Unit = "epoxy_glEnableClientState"

///|
pub fn gl_enable_client_state(array : UInt) -> Unit {
  epoxy_glEnableClientState(d_glEnableClientState.get(), array)
}

///|
let d_glEnableClientStateIndexedEXT : Dispatch = Dispatch::new(
  "glEnableClientStateIndexedEXT",
)

///|
extern "c" fn epoxy_glEnableClientStateIndexedEXT(
  fp : CPtr,
  array : UInt,
  index : UInt,
) -> Unit = "epoxy_glEnableClientStateIndexedEXT"

///|
pub fn gl_enable_client_state_indexed_ext(array : UInt, index : UInt) -> Unit {
  epoxy_glEnableClientStateIndexedEXT(
    d_glEnableClientStateIndexedEXT.get(),
    array,
    index,
  )
}

///|
let d_glEnableClientStateiEXT : Dispatch = Dispatch::new(
  "glEnableClientStateiEXT",
)

///|
extern "c" fn epoxy_glEnableClientStateiEXT(
  fp : CPtr,
  array : UInt,
  index : UInt,
) -> Unit = "epoxy_glEnableClientStateiEXT"

///|
pub fn gl_enable_client_statei_ext(array : UInt, index : UInt) -> Unit {
  epoxy_glEnableClientStateiEXT(d_glEnableClientStateiEXT.get(), array, index)
}

///|
let d_glEnableDriverControlQCOM : Dispatch = Dispatch::new(
  "glEnableDriverControlQCOM",
)

///|
extern "c" fn epoxy_glEnableDriverControlQCOM(
  fp : CPtr,
  driverControl : UInt,
) -> Unit = "epoxy_glEnableDriverControlQCOM"

///|
pub fn gl_enable_driver_control_qcom(driverControl : UInt) -> Unit {
  epoxy_glEnableDriverControlQCOM(
    d_glEnableDriverControlQCOM.get(),
    driverControl,
  )
}

///|
let d_glEnableIndexedEXT : Dispatch = Dispatch::with_aliases(
  "glEnableIndexedEXT",
  ["glEnablei", "glEnableiEXT", "glEnableiNV", "glEnableiOES"],
)

///|
extern "c" fn epoxy_glEnableIndexedEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glEnableIndexedEXT"

///|
pub fn gl_enable_indexed_ext(target : UInt, index : UInt) -> Unit {
  epoxy_glEnableIndexedEXT(d_glEnableIndexedEXT.get(), target, index)
}

///|
let d_glEnableVariantClientStateEXT : Dispatch = Dispatch::new(
  "glEnableVariantClientStateEXT",
)

///|
extern "c" fn epoxy_glEnableVariantClientStateEXT(fp : CPtr, id : UInt) -> Unit = "epoxy_glEnableVariantClientStateEXT"

///|
pub fn gl_enable_variant_client_state_ext(id : UInt) -> Unit {
  epoxy_glEnableVariantClientStateEXT(d_glEnableVariantClientStateEXT.get(), id)
}

///|
let d_glEnableVertexArrayAttrib : Dispatch = Dispatch::new(
  "glEnableVertexArrayAttrib",
)

///|
extern "c" fn epoxy_glEnableVertexArrayAttrib(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
) -> Unit = "epoxy_glEnableVertexArrayAttrib"

///|
pub fn gl_enable_vertex_array_attrib(vaobj : UInt, index : UInt) -> Unit {
  epoxy_glEnableVertexArrayAttrib(
    d_glEnableVertexArrayAttrib.get(),
    vaobj,
    index,
  )
}

///|
let d_glEnableVertexArrayAttribEXT : Dispatch = Dispatch::new(
  "glEnableVertexArrayAttribEXT",
)

///|
extern "c" fn epoxy_glEnableVertexArrayAttribEXT(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
) -> Unit = "epoxy_glEnableVertexArrayAttribEXT"

///|
pub fn gl_enable_vertex_array_attrib_ext(vaobj : UInt, index : UInt) -> Unit {
  epoxy_glEnableVertexArrayAttribEXT(
    d_glEnableVertexArrayAttribEXT.get(),
    vaobj,
    index,
  )
}

///|
let d_glEnableVertexArrayEXT : Dispatch = Dispatch::new(
  "glEnableVertexArrayEXT",
)

///|
extern "c" fn epoxy_glEnableVertexArrayEXT(
  fp : CPtr,
  vaobj : UInt,
  array : UInt,
) -> Unit = "epoxy_glEnableVertexArrayEXT"

///|
pub fn gl_enable_vertex_array_ext(vaobj : UInt, array : UInt) -> Unit {
  epoxy_glEnableVertexArrayEXT(d_glEnableVertexArrayEXT.get(), vaobj, array)
}

///|
let d_glEnableVertexAttribAPPLE : Dispatch = Dispatch::new(
  "glEnableVertexAttribAPPLE",
)

///|
extern "c" fn epoxy_glEnableVertexAttribAPPLE(
  fp : CPtr,
  index : UInt,
  pname : UInt,
) -> Unit = "epoxy_glEnableVertexAttribAPPLE"

///|
pub fn gl_enable_vertex_attrib_apple(index : UInt, pname : UInt) -> Unit {
  epoxy_glEnableVertexAttribAPPLE(
    d_glEnableVertexAttribAPPLE.get(),
    index,
    pname,
  )
}

///|
let d_glEnableVertexAttribArray : Dispatch = Dispatch::with_aliases(
  "glEnableVertexAttribArray",
  ["glEnableVertexAttribArrayARB"],
)

///|
extern "c" fn epoxy_glEnableVertexAttribArray(fp : CPtr, index : UInt) -> Unit = "epoxy_glEnableVertexAttribArray"

///|
pub fn gl_enable_vertex_attrib_array(index : UInt) -> Unit {
  epoxy_glEnableVertexAttribArray(d_glEnableVertexAttribArray.get(), index)
}

///|
let d_glEnableVertexAttribArrayARB : Dispatch = Dispatch::with_aliases(
  "glEnableVertexAttribArrayARB",
  ["glEnableVertexAttribArray"],
)

///|
extern "c" fn epoxy_glEnableVertexAttribArrayARB(
  fp : CPtr,
  index : UInt,
) -> Unit = "epoxy_glEnableVertexAttribArrayARB"

///|
pub fn gl_enable_vertex_attrib_array_arb(index : UInt) -> Unit {
  epoxy_glEnableVertexAttribArrayARB(
    d_glEnableVertexAttribArrayARB.get(),
    index,
  )
}

///|
let d_glEnablei : Dispatch = Dispatch::with_aliases("glEnablei", [
  "glEnableIndexedEXT", "glEnableiEXT", "glEnableiNV", "glEnableiOES",
])

///|
extern "c" fn epoxy_glEnablei(fp : CPtr, target : UInt, index : UInt) -> Unit = "epoxy_glEnablei"

///|
pub fn gl_enablei(target : UInt, index : UInt) -> Unit {
  epoxy_glEnablei(d_glEnablei.get(), target, index)
}

///|
let d_glEnableiEXT : Dispatch = Dispatch::with_aliases("glEnableiEXT", [
  "glEnableIndexedEXT", "glEnablei", "glEnableiNV", "glEnableiOES",
])

///|
extern "c" fn epoxy_glEnableiEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glEnableiEXT"

///|
pub fn gl_enablei_ext(target : UInt, index : UInt) -> Unit {
  epoxy_glEnableiEXT(d_glEnableiEXT.get(), target, index)
}

///|
let d_glEnableiNV : Dispatch = Dispatch::with_aliases("glEnableiNV", [
  "glEnableIndexedEXT", "glEnablei", "glEnableiEXT", "glEnableiOES",
])

///|
extern "c" fn epoxy_glEnableiNV(fp : CPtr, target : UInt, index : UInt) -> Unit = "epoxy_glEnableiNV"

///|
pub fn gl_enablei_nv(target : UInt, index : UInt) -> Unit {
  epoxy_glEnableiNV(d_glEnableiNV.get(), target, index)
}

///|
let d_glEnableiOES : Dispatch = Dispatch::with_aliases("glEnableiOES", [
  "glEnableIndexedEXT", "glEnablei", "glEnableiEXT", "glEnableiNV",
])

///|
extern "c" fn epoxy_glEnableiOES(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glEnableiOES"

///|
pub fn gl_enablei_oes(target : UInt, index : UInt) -> Unit {
  epoxy_glEnableiOES(d_glEnableiOES.get(), target, index)
}

///|
let d_glEnd : Dispatch = Dispatch::new("glEnd")

///|
extern "c" fn epoxy_glEnd(fp : CPtr) -> Unit = "epoxy_glEnd"

///|
pub fn gl_end() -> Unit {
  epoxy_glEnd(d_glEnd.get())
}

///|
let d_glEndConditionalRender : Dispatch = Dispatch::with_aliases(
  "glEndConditionalRender",
  ["glEndConditionalRenderNV", "glEndConditionalRenderNVX"],
)

///|
extern "c" fn epoxy_glEndConditionalRender(fp : CPtr) -> Unit = "epoxy_glEndConditionalRender"

///|
pub fn gl_end_conditional_render() -> Unit {
  epoxy_glEndConditionalRender(d_glEndConditionalRender.get())
}

///|
let d_glEndConditionalRenderNV : Dispatch = Dispatch::with_aliases(
  "glEndConditionalRenderNV",
  ["glEndConditionalRender", "glEndConditionalRenderNVX"],
)

///|
extern "c" fn epoxy_glEndConditionalRenderNV(fp : CPtr) -> Unit = "epoxy_glEndConditionalRenderNV"

///|
pub fn gl_end_conditional_render_nv() -> Unit {
  epoxy_glEndConditionalRenderNV(d_glEndConditionalRenderNV.get())
}

///|
let d_glEndConditionalRenderNVX : Dispatch = Dispatch::with_aliases(
  "glEndConditionalRenderNVX",
  ["glEndConditionalRender", "glEndConditionalRenderNV"],
)

///|
extern "c" fn epoxy_glEndConditionalRenderNVX(fp : CPtr) -> Unit = "epoxy_glEndConditionalRenderNVX"

///|
pub fn gl_end_conditional_render_nvx() -> Unit {
  epoxy_glEndConditionalRenderNVX(d_glEndConditionalRenderNVX.get())
}

///|
let d_glEndFragmentShaderATI : Dispatch = Dispatch::new(
  "glEndFragmentShaderATI",
)

///|
extern "c" fn epoxy_glEndFragmentShaderATI(fp : CPtr) -> Unit = "epoxy_glEndFragmentShaderATI"

///|
pub fn gl_end_fragment_shader_ati() -> Unit {
  epoxy_glEndFragmentShaderATI(d_glEndFragmentShaderATI.get())
}

///|
let d_glEndList : Dispatch = Dispatch::new("glEndList")

///|
extern "c" fn epoxy_glEndList(fp : CPtr) -> Unit = "epoxy_glEndList"

///|
pub fn gl_end_list() -> Unit {
  epoxy_glEndList(d_glEndList.get())
}

///|
let d_glEndOcclusionQueryNV : Dispatch = Dispatch::new("glEndOcclusionQueryNV")

///|
extern "c" fn epoxy_glEndOcclusionQueryNV(fp : CPtr) -> Unit = "epoxy_glEndOcclusionQueryNV"

///|
pub fn gl_end_occlusion_query_nv() -> Unit {
  epoxy_glEndOcclusionQueryNV(d_glEndOcclusionQueryNV.get())
}

///|
let d_glEndPerfMonitorAMD : Dispatch = Dispatch::new("glEndPerfMonitorAMD")

///|
extern "c" fn epoxy_glEndPerfMonitorAMD(fp : CPtr, monitor : UInt) -> Unit = "epoxy_glEndPerfMonitorAMD"

///|
pub fn gl_end_perf_monitor_amd(monitor : UInt) -> Unit {
  epoxy_glEndPerfMonitorAMD(d_glEndPerfMonitorAMD.get(), monitor)
}

///|
let d_glEndPerfQueryINTEL : Dispatch = Dispatch::new("glEndPerfQueryINTEL")

///|
extern "c" fn epoxy_glEndPerfQueryINTEL(fp : CPtr, queryHandle : UInt) -> Unit = "epoxy_glEndPerfQueryINTEL"

///|
pub fn gl_end_perf_query_intel(queryHandle : UInt) -> Unit {
  epoxy_glEndPerfQueryINTEL(d_glEndPerfQueryINTEL.get(), queryHandle)
}

///|
let d_glEndQuery : Dispatch = Dispatch::with_aliases("glEndQuery", [
  "glEndQueryARB",
])

///|
extern "c" fn epoxy_glEndQuery(fp : CPtr, target : UInt) -> Unit = "epoxy_glEndQuery"

///|
pub fn gl_end_query(target : UInt) -> Unit {
  epoxy_glEndQuery(d_glEndQuery.get(), target)
}

///|
let d_glEndQueryARB : Dispatch = Dispatch::with_aliases("glEndQueryARB", [
  "glEndQuery",
])

///|
extern "c" fn epoxy_glEndQueryARB(fp : CPtr, target : UInt) -> Unit = "epoxy_glEndQueryARB"

///|
pub fn gl_end_query_arb(target : UInt) -> Unit {
  epoxy_glEndQueryARB(d_glEndQueryARB.get(), target)
}

///|
let d_glEndQueryEXT : Dispatch = Dispatch::new("glEndQueryEXT")

///|
extern "c" fn epoxy_glEndQueryEXT(fp : CPtr, target : UInt) -> Unit = "epoxy_glEndQueryEXT"

///|
pub fn gl_end_query_ext(target : UInt) -> Unit {
  epoxy_glEndQueryEXT(d_glEndQueryEXT.get(), target)
}

///|
let d_glEndQueryIndexed : Dispatch = Dispatch::new("glEndQueryIndexed")

///|
extern "c" fn epoxy_glEndQueryIndexed(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Unit = "epoxy_glEndQueryIndexed"

///|
pub fn gl_end_query_indexed(target : UInt, index : UInt) -> Unit {
  epoxy_glEndQueryIndexed(d_glEndQueryIndexed.get(), target, index)
}

///|
let d_glEndTilingQCOM : Dispatch = Dispatch::new("glEndTilingQCOM")

///|
extern "c" fn epoxy_glEndTilingQCOM(fp : CPtr, preserveMask : UInt) -> Unit = "epoxy_glEndTilingQCOM"

///|
pub fn gl_end_tiling_qcom(preserveMask : UInt) -> Unit {
  epoxy_glEndTilingQCOM(d_glEndTilingQCOM.get(), preserveMask)
}

///|
let d_glEndTransformFeedback : Dispatch = Dispatch::with_aliases(
  "glEndTransformFeedback",
  ["glEndTransformFeedbackEXT", "glEndTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glEndTransformFeedback(fp : CPtr) -> Unit = "epoxy_glEndTransformFeedback"

///|
pub fn gl_end_transform_feedback() -> Unit {
  epoxy_glEndTransformFeedback(d_glEndTransformFeedback.get())
}

///|
let d_glEndTransformFeedbackEXT : Dispatch = Dispatch::with_aliases(
  "glEndTransformFeedbackEXT",
  ["glEndTransformFeedback", "glEndTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glEndTransformFeedbackEXT(fp : CPtr) -> Unit = "epoxy_glEndTransformFeedbackEXT"

///|
pub fn gl_end_transform_feedback_ext() -> Unit {
  epoxy_glEndTransformFeedbackEXT(d_glEndTransformFeedbackEXT.get())
}

///|
let d_glEndTransformFeedbackNV : Dispatch = Dispatch::with_aliases(
  "glEndTransformFeedbackNV",
  ["glEndTransformFeedback", "glEndTransformFeedbackEXT"],
)

///|
extern "c" fn epoxy_glEndTransformFeedbackNV(fp : CPtr) -> Unit = "epoxy_glEndTransformFeedbackNV"

///|
pub fn gl_end_transform_feedback_nv() -> Unit {
  epoxy_glEndTransformFeedbackNV(d_glEndTransformFeedbackNV.get())
}

///|
let d_glEndVertexShaderEXT : Dispatch = Dispatch::new("glEndVertexShaderEXT")

///|
extern "c" fn epoxy_glEndVertexShaderEXT(fp : CPtr) -> Unit = "epoxy_glEndVertexShaderEXT"

///|
pub fn gl_end_vertex_shader_ext() -> Unit {
  epoxy_glEndVertexShaderEXT(d_glEndVertexShaderEXT.get())
}

///|
let d_glEndVideoCaptureNV : Dispatch = Dispatch::new("glEndVideoCaptureNV")

///|
extern "c" fn epoxy_glEndVideoCaptureNV(
  fp : CPtr,
  video_capture_slot : UInt,
) -> Unit = "epoxy_glEndVideoCaptureNV"

///|
pub fn gl_end_video_capture_nv(video_capture_slot : UInt) -> Unit {
  epoxy_glEndVideoCaptureNV(d_glEndVideoCaptureNV.get(), video_capture_slot)
}

///|
let d_glEvalCoord1d : Dispatch = Dispatch::new("glEvalCoord1d")

///|
extern "c" fn epoxy_glEvalCoord1d(fp : CPtr, u : Double) -> Unit = "epoxy_glEvalCoord1d"

///|
pub fn gl_eval_coord1d(u : Double) -> Unit {
  epoxy_glEvalCoord1d(d_glEvalCoord1d.get(), u)
}

///|
let d_glEvalCoord1dv : Dispatch = Dispatch::new("glEvalCoord1dv")

///|
#borrow(u)
extern "c" fn epoxy_glEvalCoord1dv(fp : CPtr, u : FixedArray[Double]) -> Unit = "epoxy_glEvalCoord1dv"

///|
pub fn gl_eval_coord1dv(u : FixedArray[Double]) -> Unit {
  epoxy_glEvalCoord1dv(d_glEvalCoord1dv.get(), u)
}

///|
let d_glEvalCoord1f : Dispatch = Dispatch::new("glEvalCoord1f")

///|
extern "c" fn epoxy_glEvalCoord1f(fp : CPtr, u : Float) -> Unit = "epoxy_glEvalCoord1f"

///|
pub fn gl_eval_coord1f(u : Float) -> Unit {
  epoxy_glEvalCoord1f(d_glEvalCoord1f.get(), u)
}

///|
let d_glEvalCoord1fv : Dispatch = Dispatch::new("glEvalCoord1fv")

///|
#borrow(u)
extern "c" fn epoxy_glEvalCoord1fv(fp : CPtr, u : FixedArray[Float]) -> Unit = "epoxy_glEvalCoord1fv"

///|
pub fn gl_eval_coord1fv(u : FixedArray[Float]) -> Unit {
  epoxy_glEvalCoord1fv(d_glEvalCoord1fv.get(), u)
}

///|
let d_glEvalCoord1xOES : Dispatch = Dispatch::new("glEvalCoord1xOES")

///|
extern "c" fn epoxy_glEvalCoord1xOES(fp : CPtr, u : Int) -> Unit = "epoxy_glEvalCoord1xOES"

///|
pub fn gl_eval_coord1x_oes(u : Int) -> Unit {
  epoxy_glEvalCoord1xOES(d_glEvalCoord1xOES.get(), u)
}

///|
let d_glEvalCoord1xvOES : Dispatch = Dispatch::new("glEvalCoord1xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glEvalCoord1xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glEvalCoord1xvOES"

///|
pub fn gl_eval_coord1xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glEvalCoord1xvOES(d_glEvalCoord1xvOES.get(), coords)
}

///|
let d_glEvalCoord2d : Dispatch = Dispatch::new("glEvalCoord2d")

///|
extern "c" fn epoxy_glEvalCoord2d(fp : CPtr, u : Double, v : Double) -> Unit = "epoxy_glEvalCoord2d"

///|
pub fn gl_eval_coord2d(u : Double, v : Double) -> Unit {
  epoxy_glEvalCoord2d(d_glEvalCoord2d.get(), u, v)
}

///|
let d_glEvalCoord2dv : Dispatch = Dispatch::new("glEvalCoord2dv")

///|
#borrow(u)
extern "c" fn epoxy_glEvalCoord2dv(fp : CPtr, u : FixedArray[Double]) -> Unit = "epoxy_glEvalCoord2dv"

///|
pub fn gl_eval_coord2dv(u : FixedArray[Double]) -> Unit {
  epoxy_glEvalCoord2dv(d_glEvalCoord2dv.get(), u)
}

///|
let d_glEvalCoord2f : Dispatch = Dispatch::new("glEvalCoord2f")

///|
extern "c" fn epoxy_glEvalCoord2f(fp : CPtr, u : Float, v : Float) -> Unit = "epoxy_glEvalCoord2f"

///|
pub fn gl_eval_coord2f(u : Float, v : Float) -> Unit {
  epoxy_glEvalCoord2f(d_glEvalCoord2f.get(), u, v)
}

///|
let d_glEvalCoord2fv : Dispatch = Dispatch::new("glEvalCoord2fv")

///|
#borrow(u)
extern "c" fn epoxy_glEvalCoord2fv(fp : CPtr, u : FixedArray[Float]) -> Unit = "epoxy_glEvalCoord2fv"

///|
pub fn gl_eval_coord2fv(u : FixedArray[Float]) -> Unit {
  epoxy_glEvalCoord2fv(d_glEvalCoord2fv.get(), u)
}

///|
let d_glEvalCoord2xOES : Dispatch = Dispatch::new("glEvalCoord2xOES")

///|
extern "c" fn epoxy_glEvalCoord2xOES(fp : CPtr, u : Int, v : Int) -> Unit = "epoxy_glEvalCoord2xOES"

///|
pub fn gl_eval_coord2x_oes(u : Int, v : Int) -> Unit {
  epoxy_glEvalCoord2xOES(d_glEvalCoord2xOES.get(), u, v)
}

///|
let d_glEvalCoord2xvOES : Dispatch = Dispatch::new("glEvalCoord2xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glEvalCoord2xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glEvalCoord2xvOES"

///|
pub fn gl_eval_coord2xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glEvalCoord2xvOES(d_glEvalCoord2xvOES.get(), coords)
}

///|
let d_glEvalMapsNV : Dispatch = Dispatch::new("glEvalMapsNV")

///|
extern "c" fn epoxy_glEvalMapsNV(fp : CPtr, target : UInt, mode : UInt) -> Unit = "epoxy_glEvalMapsNV"

///|
pub fn gl_eval_maps_nv(target : UInt, mode : UInt) -> Unit {
  epoxy_glEvalMapsNV(d_glEvalMapsNV.get(), target, mode)
}

///|
let d_glEvalMesh1 : Dispatch = Dispatch::new("glEvalMesh1")

///|
extern "c" fn epoxy_glEvalMesh1(
  fp : CPtr,
  mode : UInt,
  i1 : Int,
  i2 : Int,
) -> Unit = "epoxy_glEvalMesh1"

///|
pub fn gl_eval_mesh1(mode : UInt, i1 : Int, i2 : Int) -> Unit {
  epoxy_glEvalMesh1(d_glEvalMesh1.get(), mode, i1, i2)
}

///|
let d_glEvalMesh2 : Dispatch = Dispatch::new("glEvalMesh2")

///|
extern "c" fn epoxy_glEvalMesh2(
  fp : CPtr,
  mode : UInt,
  i1 : Int,
  i2 : Int,
  j1 : Int,
  j2 : Int,
) -> Unit = "epoxy_glEvalMesh2"

///|
pub fn gl_eval_mesh2(
  mode : UInt,
  i1 : Int,
  i2 : Int,
  j1 : Int,
  j2 : Int,
) -> Unit {
  epoxy_glEvalMesh2(d_glEvalMesh2.get(), mode, i1, i2, j1, j2)
}

///|
let d_glEvalPoint1 : Dispatch = Dispatch::new("glEvalPoint1")

///|
extern "c" fn epoxy_glEvalPoint1(fp : CPtr, i : Int) -> Unit = "epoxy_glEvalPoint1"

///|
pub fn gl_eval_point1(i : Int) -> Unit {
  epoxy_glEvalPoint1(d_glEvalPoint1.get(), i)
}

///|
let d_glEvalPoint2 : Dispatch = Dispatch::new("glEvalPoint2")

///|
extern "c" fn epoxy_glEvalPoint2(fp : CPtr, i : Int, j : Int) -> Unit = "epoxy_glEvalPoint2"

///|
pub fn gl_eval_point2(i : Int, j : Int) -> Unit {
  epoxy_glEvalPoint2(d_glEvalPoint2.get(), i, j)
}

///|
let d_glEvaluateDepthValuesARB : Dispatch = Dispatch::new(
  "glEvaluateDepthValuesARB",
)

///|
extern "c" fn epoxy_glEvaluateDepthValuesARB(fp : CPtr) -> Unit = "epoxy_glEvaluateDepthValuesARB"

///|
pub fn gl_evaluate_depth_values_arb() -> Unit {
  epoxy_glEvaluateDepthValuesARB(d_glEvaluateDepthValuesARB.get())
}

///|
let d_glExecuteProgramNV : Dispatch = Dispatch::new("glExecuteProgramNV")

///|
#borrow(params)
extern "c" fn epoxy_glExecuteProgramNV(
  fp : CPtr,
  target : UInt,
  id : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glExecuteProgramNV"

///|
pub fn gl_execute_program_nv(
  target : UInt,
  id : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glExecuteProgramNV(d_glExecuteProgramNV.get(), target, id, params)
}

///|
let d_glExtGetBuffersQCOM : Dispatch = Dispatch::new("glExtGetBuffersQCOM")

///|
#borrow(buffers, numBuffers)
extern "c" fn epoxy_glExtGetBuffersQCOM(
  fp : CPtr,
  buffers : FixedArray[UInt],
  maxBuffers : Int,
  numBuffers : FixedArray[Int],
) -> Unit = "epoxy_glExtGetBuffersQCOM"

///|
pub fn gl_ext_get_buffers_qcom(
  buffers : FixedArray[UInt],
  maxBuffers : Int,
  numBuffers : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetBuffersQCOM(
    d_glExtGetBuffersQCOM.get(),
    buffers,
    maxBuffers,
    numBuffers,
  )
}

///|
let d_glExtGetFramebuffersQCOM : Dispatch = Dispatch::new(
  "glExtGetFramebuffersQCOM",
)

///|
#borrow(framebuffers, numFramebuffers)
extern "c" fn epoxy_glExtGetFramebuffersQCOM(
  fp : CPtr,
  framebuffers : FixedArray[UInt],
  maxFramebuffers : Int,
  numFramebuffers : FixedArray[Int],
) -> Unit = "epoxy_glExtGetFramebuffersQCOM"

///|
pub fn gl_ext_get_framebuffers_qcom(
  framebuffers : FixedArray[UInt],
  maxFramebuffers : Int,
  numFramebuffers : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetFramebuffersQCOM(
    d_glExtGetFramebuffersQCOM.get(),
    framebuffers,
    maxFramebuffers,
    numFramebuffers,
  )
}

///|
let d_glExtGetProgramBinarySourceQCOM : Dispatch = Dispatch::new(
  "glExtGetProgramBinarySourceQCOM",
)

///|
#borrow(source, length)
extern "c" fn epoxy_glExtGetProgramBinarySourceQCOM(
  fp : CPtr,
  program : UInt,
  shadertype : UInt,
  source : Bytes,
  length : FixedArray[Int],
) -> Unit = "epoxy_glExtGetProgramBinarySourceQCOM"

///|
pub fn gl_ext_get_program_binary_source_qcom(
  program : UInt,
  shadertype : UInt,
  source : Bytes,
  length : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetProgramBinarySourceQCOM(
    d_glExtGetProgramBinarySourceQCOM.get(),
    program,
    shadertype,
    source,
    length,
  )
}

///|
let d_glExtGetProgramsQCOM : Dispatch = Dispatch::new("glExtGetProgramsQCOM")

///|
#borrow(programs, numPrograms)
extern "c" fn epoxy_glExtGetProgramsQCOM(
  fp : CPtr,
  programs : FixedArray[UInt],
  maxPrograms : Int,
  numPrograms : FixedArray[Int],
) -> Unit = "epoxy_glExtGetProgramsQCOM"

///|
pub fn gl_ext_get_programs_qcom(
  programs : FixedArray[UInt],
  maxPrograms : Int,
  numPrograms : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetProgramsQCOM(
    d_glExtGetProgramsQCOM.get(),
    programs,
    maxPrograms,
    numPrograms,
  )
}

///|
let d_glExtGetRenderbuffersQCOM : Dispatch = Dispatch::new(
  "glExtGetRenderbuffersQCOM",
)

///|
#borrow(renderbuffers, numRenderbuffers)
extern "c" fn epoxy_glExtGetRenderbuffersQCOM(
  fp : CPtr,
  renderbuffers : FixedArray[UInt],
  maxRenderbuffers : Int,
  numRenderbuffers : FixedArray[Int],
) -> Unit = "epoxy_glExtGetRenderbuffersQCOM"

///|
pub fn gl_ext_get_renderbuffers_qcom(
  renderbuffers : FixedArray[UInt],
  maxRenderbuffers : Int,
  numRenderbuffers : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetRenderbuffersQCOM(
    d_glExtGetRenderbuffersQCOM.get(),
    renderbuffers,
    maxRenderbuffers,
    numRenderbuffers,
  )
}

///|
let d_glExtGetShadersQCOM : Dispatch = Dispatch::new("glExtGetShadersQCOM")

///|
#borrow(shaders, numShaders)
extern "c" fn epoxy_glExtGetShadersQCOM(
  fp : CPtr,
  shaders : FixedArray[UInt],
  maxShaders : Int,
  numShaders : FixedArray[Int],
) -> Unit = "epoxy_glExtGetShadersQCOM"

///|
pub fn gl_ext_get_shaders_qcom(
  shaders : FixedArray[UInt],
  maxShaders : Int,
  numShaders : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetShadersQCOM(
    d_glExtGetShadersQCOM.get(),
    shaders,
    maxShaders,
    numShaders,
  )
}

///|
let d_glExtGetTexLevelParameterivQCOM : Dispatch = Dispatch::new(
  "glExtGetTexLevelParameterivQCOM",
)

///|
#borrow(params)
extern "c" fn epoxy_glExtGetTexLevelParameterivQCOM(
  fp : CPtr,
  texture : UInt,
  face : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glExtGetTexLevelParameterivQCOM"

///|
pub fn gl_ext_get_tex_level_parameteriv_qcom(
  texture : UInt,
  face : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetTexLevelParameterivQCOM(
    d_glExtGetTexLevelParameterivQCOM.get(),
    texture,
    face,
    level,
    pname,
    params,
  )
}

///|
let d_glExtGetTexSubImageQCOM : Dispatch = Dispatch::new(
  "glExtGetTexSubImageQCOM",
)

///|
#borrow(texels)
extern "c" fn epoxy_glExtGetTexSubImageQCOM(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  texels : Bytes,
) -> Unit = "epoxy_glExtGetTexSubImageQCOM"

///|
pub fn gl_ext_get_tex_sub_image_qcom(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  texels : Bytes,
) -> Unit {
  epoxy_glExtGetTexSubImageQCOM(
    d_glExtGetTexSubImageQCOM.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    texels,
  )
}

///|
let d_glExtGetTexturesQCOM : Dispatch = Dispatch::new("glExtGetTexturesQCOM")

///|
#borrow(textures, numTextures)
extern "c" fn epoxy_glExtGetTexturesQCOM(
  fp : CPtr,
  textures : FixedArray[UInt],
  maxTextures : Int,
  numTextures : FixedArray[Int],
) -> Unit = "epoxy_glExtGetTexturesQCOM"

///|
pub fn gl_ext_get_textures_qcom(
  textures : FixedArray[UInt],
  maxTextures : Int,
  numTextures : FixedArray[Int],
) -> Unit {
  epoxy_glExtGetTexturesQCOM(
    d_glExtGetTexturesQCOM.get(),
    textures,
    maxTextures,
    numTextures,
  )
}

///|
let d_glExtIsProgramBinaryQCOM : Dispatch = Dispatch::new(
  "glExtIsProgramBinaryQCOM",
)

///|
extern "c" fn epoxy_glExtIsProgramBinaryQCOM(fp : CPtr, program : UInt) -> Bool = "epoxy_glExtIsProgramBinaryQCOM"

///|
pub fn gl_ext_is_program_binary_qcom(program : UInt) -> Bool {
  epoxy_glExtIsProgramBinaryQCOM(d_glExtIsProgramBinaryQCOM.get(), program)
}

///|
let d_glExtTexObjectStateOverrideiQCOM : Dispatch = Dispatch::new(
  "glExtTexObjectStateOverrideiQCOM",
)

///|
extern "c" fn epoxy_glExtTexObjectStateOverrideiQCOM(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glExtTexObjectStateOverrideiQCOM"

///|
pub fn gl_ext_tex_object_state_overridei_qcom(
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glExtTexObjectStateOverrideiQCOM(
    d_glExtTexObjectStateOverrideiQCOM.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glExtractComponentEXT : Dispatch = Dispatch::new("glExtractComponentEXT")

///|
extern "c" fn epoxy_glExtractComponentEXT(
  fp : CPtr,
  res : UInt,
  src : UInt,
  num : UInt,
) -> Unit = "epoxy_glExtractComponentEXT"

///|
pub fn gl_extract_component_ext(res : UInt, src : UInt, num : UInt) -> Unit {
  epoxy_glExtractComponentEXT(d_glExtractComponentEXT.get(), res, src, num)
}

///|
let d_glFeedbackBuffer : Dispatch = Dispatch::new("glFeedbackBuffer")

///|
#borrow(buffer)
extern "c" fn epoxy_glFeedbackBuffer(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  buffer : FixedArray[Float],
) -> Unit = "epoxy_glFeedbackBuffer"

///|
pub fn gl_feedback_buffer(
  size : Int,
  type_ : UInt,
  buffer : FixedArray[Float],
) -> Unit {
  epoxy_glFeedbackBuffer(d_glFeedbackBuffer.get(), size, type_, buffer)
}

///|
let d_glFeedbackBufferxOES : Dispatch = Dispatch::new("glFeedbackBufferxOES")

///|
#borrow(buffer)
extern "c" fn epoxy_glFeedbackBufferxOES(
  fp : CPtr,
  n : Int,
  type_ : UInt,
  buffer : FixedArray[Int],
) -> Unit = "epoxy_glFeedbackBufferxOES"

///|
pub fn gl_feedback_bufferx_oes(
  n : Int,
  type_ : UInt,
  buffer : FixedArray[Int],
) -> Unit {
  epoxy_glFeedbackBufferxOES(d_glFeedbackBufferxOES.get(), n, type_, buffer)
}

///|
let d_glFenceSync : Dispatch = Dispatch::with_aliases("glFenceSync", [
  "glFenceSyncAPPLE",
])

///|
extern "c" fn epoxy_glFenceSync(
  fp : CPtr,
  condition : UInt,
  flags : UInt,
) -> GLsync = "epoxy_glFenceSync"

///|
pub fn gl_fence_sync(condition : UInt, flags : UInt) -> GLsync {
  epoxy_glFenceSync(d_glFenceSync.get(), condition, flags)
}

///|
let d_glFenceSyncAPPLE : Dispatch = Dispatch::with_aliases("glFenceSyncAPPLE", [
  "glFenceSync",
])

///|
extern "c" fn epoxy_glFenceSyncAPPLE(
  fp : CPtr,
  condition : UInt,
  flags : UInt,
) -> GLsync = "epoxy_glFenceSyncAPPLE"

///|
pub fn gl_fence_sync_apple(condition : UInt, flags : UInt) -> GLsync {
  epoxy_glFenceSyncAPPLE(d_glFenceSyncAPPLE.get(), condition, flags)
}

///|
let d_glFinalCombinerInputNV : Dispatch = Dispatch::new(
  "glFinalCombinerInputNV",
)

///|
extern "c" fn epoxy_glFinalCombinerInputNV(
  fp : CPtr,
  variable : UInt,
  input : UInt,
  mapping : UInt,
  componentUsage : UInt,
) -> Unit = "epoxy_glFinalCombinerInputNV"

///|
pub fn gl_final_combiner_input_nv(
  variable : UInt,
  input : UInt,
  mapping : UInt,
  componentUsage : UInt,
) -> Unit {
  epoxy_glFinalCombinerInputNV(
    d_glFinalCombinerInputNV.get(),
    variable,
    input,
    mapping,
    componentUsage,
  )
}

///|
let d_glFinish : Dispatch = Dispatch::new("glFinish")

///|
extern "c" fn epoxy_glFinish(fp : CPtr) -> Unit = "epoxy_glFinish"

///|
pub fn gl_finish() -> Unit {
  epoxy_glFinish(d_glFinish.get())
}

///|
let d_glFinishAsyncSGIX : Dispatch = Dispatch::new("glFinishAsyncSGIX")

///|
#borrow(markerp)
extern "c" fn epoxy_glFinishAsyncSGIX(
  fp : CPtr,
  markerp : FixedArray[UInt],
) -> Int = "epoxy_glFinishAsyncSGIX"

///|
pub fn gl_finish_async_sgix(markerp : FixedArray[UInt]) -> Int {
  epoxy_glFinishAsyncSGIX(d_glFinishAsyncSGIX.get(), markerp)
}

///|
let d_glFinishFenceAPPLE : Dispatch = Dispatch::new("glFinishFenceAPPLE")

///|
extern "c" fn epoxy_glFinishFenceAPPLE(fp : CPtr, fence : UInt) -> Unit = "epoxy_glFinishFenceAPPLE"

///|
pub fn gl_finish_fence_apple(fence : UInt) -> Unit {
  epoxy_glFinishFenceAPPLE(d_glFinishFenceAPPLE.get(), fence)
}

///|
let d_glFinishFenceNV : Dispatch = Dispatch::new("glFinishFenceNV")

///|
extern "c" fn epoxy_glFinishFenceNV(fp : CPtr, fence : UInt) -> Unit = "epoxy_glFinishFenceNV"

///|
pub fn gl_finish_fence_nv(fence : UInt) -> Unit {
  epoxy_glFinishFenceNV(d_glFinishFenceNV.get(), fence)
}

///|
let d_glFinishObjectAPPLE : Dispatch = Dispatch::new("glFinishObjectAPPLE")

///|
extern "c" fn epoxy_glFinishObjectAPPLE(
  fp : CPtr,
  object : UInt,
  name : Int,
) -> Unit = "epoxy_glFinishObjectAPPLE"

///|
pub fn gl_finish_object_apple(object : UInt, name : Int) -> Unit {
  epoxy_glFinishObjectAPPLE(d_glFinishObjectAPPLE.get(), object, name)
}

///|
let d_glFinishTextureSUNX : Dispatch = Dispatch::new("glFinishTextureSUNX")

///|
extern "c" fn epoxy_glFinishTextureSUNX(fp : CPtr) -> Unit = "epoxy_glFinishTextureSUNX"

///|
pub fn gl_finish_texture_sunx() -> Unit {
  epoxy_glFinishTextureSUNX(d_glFinishTextureSUNX.get())
}

///|
let d_glFlush : Dispatch = Dispatch::new("glFlush")

///|
extern "c" fn epoxy_glFlush(fp : CPtr) -> Unit = "epoxy_glFlush"

///|
pub fn gl_flush() -> Unit {
  epoxy_glFlush(d_glFlush.get())
}

///|
let d_glFlushMappedBufferRange : Dispatch = Dispatch::with_aliases(
  "glFlushMappedBufferRange",
  ["glFlushMappedBufferRangeAPPLE", "glFlushMappedBufferRangeEXT"],
)

///|
extern "c" fn epoxy_glFlushMappedBufferRange(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  length : Int64,
) -> Unit = "epoxy_glFlushMappedBufferRange"

///|
pub fn gl_flush_mapped_buffer_range(
  target : UInt,
  offset : Int64,
  length : Int64,
) -> Unit {
  epoxy_glFlushMappedBufferRange(
    d_glFlushMappedBufferRange.get(),
    target,
    offset,
    length,
  )
}

///|
let d_glFlushMappedBufferRangeAPPLE : Dispatch = Dispatch::with_aliases(
  "glFlushMappedBufferRangeAPPLE",
  ["glFlushMappedBufferRange", "glFlushMappedBufferRangeEXT"],
)

///|
extern "c" fn epoxy_glFlushMappedBufferRangeAPPLE(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glFlushMappedBufferRangeAPPLE"

///|
pub fn gl_flush_mapped_buffer_range_apple(
  target : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glFlushMappedBufferRangeAPPLE(
    d_glFlushMappedBufferRangeAPPLE.get(),
    target,
    offset,
    size,
  )
}

///|
let d_glFlushMappedBufferRangeEXT : Dispatch = Dispatch::with_aliases(
  "glFlushMappedBufferRangeEXT",
  ["glFlushMappedBufferRange", "glFlushMappedBufferRangeAPPLE"],
)

///|
extern "c" fn epoxy_glFlushMappedBufferRangeEXT(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  length : Int64,
) -> Unit = "epoxy_glFlushMappedBufferRangeEXT"

///|
pub fn gl_flush_mapped_buffer_range_ext(
  target : UInt,
  offset : Int64,
  length : Int64,
) -> Unit {
  epoxy_glFlushMappedBufferRangeEXT(
    d_glFlushMappedBufferRangeEXT.get(),
    target,
    offset,
    length,
  )
}

///|
let d_glFlushMappedNamedBufferRange : Dispatch = Dispatch::new(
  "glFlushMappedNamedBufferRange",
)

///|
extern "c" fn epoxy_glFlushMappedNamedBufferRange(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  length : Int64,
) -> Unit = "epoxy_glFlushMappedNamedBufferRange"

///|
pub fn gl_flush_mapped_named_buffer_range(
  buffer : UInt,
  offset : Int64,
  length : Int64,
) -> Unit {
  epoxy_glFlushMappedNamedBufferRange(
    d_glFlushMappedNamedBufferRange.get(),
    buffer,
    offset,
    length,
  )
}

///|
let d_glFlushMappedNamedBufferRangeEXT : Dispatch = Dispatch::new(
  "glFlushMappedNamedBufferRangeEXT",
)

///|
extern "c" fn epoxy_glFlushMappedNamedBufferRangeEXT(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  length : Int64,
) -> Unit = "epoxy_glFlushMappedNamedBufferRangeEXT"

///|
pub fn gl_flush_mapped_named_buffer_range_ext(
  buffer : UInt,
  offset : Int64,
  length : Int64,
) -> Unit {
  epoxy_glFlushMappedNamedBufferRangeEXT(
    d_glFlushMappedNamedBufferRangeEXT.get(),
    buffer,
    offset,
    length,
  )
}

///|
let d_glFlushPixelDataRangeNV : Dispatch = Dispatch::new(
  "glFlushPixelDataRangeNV",
)

///|
extern "c" fn epoxy_glFlushPixelDataRangeNV(fp : CPtr, target : UInt) -> Unit = "epoxy_glFlushPixelDataRangeNV"

///|
pub fn gl_flush_pixel_data_range_nv(target : UInt) -> Unit {
  epoxy_glFlushPixelDataRangeNV(d_glFlushPixelDataRangeNV.get(), target)
}

///|
let d_glFlushRasterSGIX : Dispatch = Dispatch::new("glFlushRasterSGIX")

///|
extern "c" fn epoxy_glFlushRasterSGIX(fp : CPtr) -> Unit = "epoxy_glFlushRasterSGIX"

///|
pub fn gl_flush_raster_sgix() -> Unit {
  epoxy_glFlushRasterSGIX(d_glFlushRasterSGIX.get())
}

///|
let d_glFlushStaticDataIBM : Dispatch = Dispatch::new("glFlushStaticDataIBM")

///|
extern "c" fn epoxy_glFlushStaticDataIBM(fp : CPtr, target : UInt) -> Unit = "epoxy_glFlushStaticDataIBM"

///|
pub fn gl_flush_static_data_ibm(target : UInt) -> Unit {
  epoxy_glFlushStaticDataIBM(d_glFlushStaticDataIBM.get(), target)
}

///|
let d_glFlushVertexArrayRangeAPPLE : Dispatch = Dispatch::new(
  "glFlushVertexArrayRangeAPPLE",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glFlushVertexArrayRangeAPPLE(
  fp : CPtr,
  length : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glFlushVertexArrayRangeAPPLE"

///|
pub fn gl_flush_vertex_array_range_apple(length : Int, pointer : Bytes) -> Unit {
  epoxy_glFlushVertexArrayRangeAPPLE(
    d_glFlushVertexArrayRangeAPPLE.get(),
    length,
    pointer,
  )
}

///|
let d_glFlushVertexArrayRangeNV : Dispatch = Dispatch::new(
  "glFlushVertexArrayRangeNV",
)

///|
extern "c" fn epoxy_glFlushVertexArrayRangeNV(fp : CPtr) -> Unit = "epoxy_glFlushVertexArrayRangeNV"

///|
pub fn gl_flush_vertex_array_range_nv() -> Unit {
  epoxy_glFlushVertexArrayRangeNV(d_glFlushVertexArrayRangeNV.get())
}

///|
let d_glFogCoordFormatNV : Dispatch = Dispatch::new("glFogCoordFormatNV")

///|
extern "c" fn epoxy_glFogCoordFormatNV(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glFogCoordFormatNV"

///|
pub fn gl_fog_coord_format_nv(type_ : UInt, stride : Int) -> Unit {
  epoxy_glFogCoordFormatNV(d_glFogCoordFormatNV.get(), type_, stride)
}

///|
let d_glFogCoordPointer : Dispatch = Dispatch::with_aliases(
  "glFogCoordPointer",
  ["glFogCoordPointerEXT"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glFogCoordPointer(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glFogCoordPointer"

///|
pub fn gl_fog_coord_pointer(
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glFogCoordPointer(d_glFogCoordPointer.get(), type_, stride, pointer)
}

///|
let d_glFogCoordPointerEXT : Dispatch = Dispatch::with_aliases(
  "glFogCoordPointerEXT",
  ["glFogCoordPointer"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glFogCoordPointerEXT(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glFogCoordPointerEXT"

///|
pub fn gl_fog_coord_pointer_ext(
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glFogCoordPointerEXT(
    d_glFogCoordPointerEXT.get(),
    type_,
    stride,
    pointer,
  )
}

///|
let d_glFogCoordd : Dispatch = Dispatch::with_aliases("glFogCoordd", [
  "glFogCoorddEXT",
])

///|
extern "c" fn epoxy_glFogCoordd(fp : CPtr, coord : Double) -> Unit = "epoxy_glFogCoordd"

///|
pub fn gl_fog_coordd(coord : Double) -> Unit {
  epoxy_glFogCoordd(d_glFogCoordd.get(), coord)
}

///|
let d_glFogCoorddEXT : Dispatch = Dispatch::with_aliases("glFogCoorddEXT", [
  "glFogCoordd",
])

///|
extern "c" fn epoxy_glFogCoorddEXT(fp : CPtr, coord : Double) -> Unit = "epoxy_glFogCoorddEXT"

///|
pub fn gl_fog_coordd_ext(coord : Double) -> Unit {
  epoxy_glFogCoorddEXT(d_glFogCoorddEXT.get(), coord)
}

///|
let d_glFogCoorddv : Dispatch = Dispatch::with_aliases("glFogCoorddv", [
  "glFogCoorddvEXT",
])

///|
#borrow(coord)
extern "c" fn epoxy_glFogCoorddv(fp : CPtr, coord : FixedArray[Double]) -> Unit = "epoxy_glFogCoorddv"

///|
pub fn gl_fog_coorddv(coord : FixedArray[Double]) -> Unit {
  epoxy_glFogCoorddv(d_glFogCoorddv.get(), coord)
}

///|
let d_glFogCoorddvEXT : Dispatch = Dispatch::with_aliases("glFogCoorddvEXT", [
  "glFogCoorddv",
])

///|
#borrow(coord)
extern "c" fn epoxy_glFogCoorddvEXT(
  fp : CPtr,
  coord : FixedArray[Double],
) -> Unit = "epoxy_glFogCoorddvEXT"

///|
pub fn gl_fog_coorddv_ext(coord : FixedArray[Double]) -> Unit {
  epoxy_glFogCoorddvEXT(d_glFogCoorddvEXT.get(), coord)
}

///|
let d_glFogCoordf : Dispatch = Dispatch::with_aliases("glFogCoordf", [
  "glFogCoordfEXT",
])

///|
extern "c" fn epoxy_glFogCoordf(fp : CPtr, coord : Float) -> Unit = "epoxy_glFogCoordf"

///|
pub fn gl_fog_coordf(coord : Float) -> Unit {
  epoxy_glFogCoordf(d_glFogCoordf.get(), coord)
}

///|
let d_glFogCoordfEXT : Dispatch = Dispatch::with_aliases("glFogCoordfEXT", [
  "glFogCoordf",
])

///|
extern "c" fn epoxy_glFogCoordfEXT(fp : CPtr, coord : Float) -> Unit = "epoxy_glFogCoordfEXT"

///|
pub fn gl_fog_coordf_ext(coord : Float) -> Unit {
  epoxy_glFogCoordfEXT(d_glFogCoordfEXT.get(), coord)
}

///|
let d_glFogCoordfv : Dispatch = Dispatch::with_aliases("glFogCoordfv", [
  "glFogCoordfvEXT",
])

///|
#borrow(coord)
extern "c" fn epoxy_glFogCoordfv(fp : CPtr, coord : FixedArray[Float]) -> Unit = "epoxy_glFogCoordfv"

///|
pub fn gl_fog_coordfv(coord : FixedArray[Float]) -> Unit {
  epoxy_glFogCoordfv(d_glFogCoordfv.get(), coord)
}

///|
let d_glFogCoordfvEXT : Dispatch = Dispatch::with_aliases("glFogCoordfvEXT", [
  "glFogCoordfv",
])

///|
#borrow(coord)
extern "c" fn epoxy_glFogCoordfvEXT(
  fp : CPtr,
  coord : FixedArray[Float],
) -> Unit = "epoxy_glFogCoordfvEXT"

///|
pub fn gl_fog_coordfv_ext(coord : FixedArray[Float]) -> Unit {
  epoxy_glFogCoordfvEXT(d_glFogCoordfvEXT.get(), coord)
}

///|
let d_glFogCoordhNV : Dispatch = Dispatch::new("glFogCoordhNV")

///|
extern "c" fn epoxy_glFogCoordhNV(fp : CPtr, fog : Int) -> Unit = "epoxy_glFogCoordhNV"

///|
pub fn gl_fog_coordh_nv(fog : Int) -> Unit {
  epoxy_glFogCoordhNV(d_glFogCoordhNV.get(), fog)
}

///|
let d_glFogCoordhvNV : Dispatch = Dispatch::new("glFogCoordhvNV")

///|
#borrow(fog)
extern "c" fn epoxy_glFogCoordhvNV(fp : CPtr, fog : FixedArray[UInt16]) -> Unit = "epoxy_glFogCoordhvNV"

///|
pub fn gl_fog_coordhv_nv(fog : FixedArray[UInt16]) -> Unit {
  epoxy_glFogCoordhvNV(d_glFogCoordhvNV.get(), fog)
}

///|
let d_glFogFuncSGIS : Dispatch = Dispatch::new("glFogFuncSGIS")

///|
#borrow(points)
extern "c" fn epoxy_glFogFuncSGIS(
  fp : CPtr,
  n : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glFogFuncSGIS"

///|
pub fn gl_fog_func_sgis(n : Int, points : FixedArray[Float]) -> Unit {
  epoxy_glFogFuncSGIS(d_glFogFuncSGIS.get(), n, points)
}

///|
let d_glFogf : Dispatch = Dispatch::new("glFogf")

///|
extern "c" fn epoxy_glFogf(fp : CPtr, pname : UInt, param : Float) -> Unit = "epoxy_glFogf"

///|
pub fn gl_fogf(pname : UInt, param : Float) -> Unit {
  epoxy_glFogf(d_glFogf.get(), pname, param)
}

///|
let d_glFogfv : Dispatch = Dispatch::new("glFogfv")

///|
#borrow(params)
extern "c" fn epoxy_glFogfv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glFogfv"

///|
pub fn gl_fogfv(pname : UInt, params : FixedArray[Float]) -> Unit {
  epoxy_glFogfv(d_glFogfv.get(), pname, params)
}

///|
let d_glFogi : Dispatch = Dispatch::new("glFogi")

///|
extern "c" fn epoxy_glFogi(fp : CPtr, pname : UInt, param : Int) -> Unit = "epoxy_glFogi"

///|
pub fn gl_fogi(pname : UInt, param : Int) -> Unit {
  epoxy_glFogi(d_glFogi.get(), pname, param)
}

///|
let d_glFogiv : Dispatch = Dispatch::new("glFogiv")

///|
#borrow(params)
extern "c" fn epoxy_glFogiv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glFogiv"

///|
pub fn gl_fogiv(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glFogiv(d_glFogiv.get(), pname, params)
}

///|
let d_glFogx : Dispatch = Dispatch::new("glFogx")

///|
extern "c" fn epoxy_glFogx(fp : CPtr, pname : UInt, param : Int) -> Unit = "epoxy_glFogx"

///|
pub fn gl_fogx(pname : UInt, param : Int) -> Unit {
  epoxy_glFogx(d_glFogx.get(), pname, param)
}

///|
let d_glFogxOES : Dispatch = Dispatch::new("glFogxOES")

///|
extern "c" fn epoxy_glFogxOES(fp : CPtr, pname : UInt, param : Int) -> Unit = "epoxy_glFogxOES"

///|
pub fn gl_fogx_oes(pname : UInt, param : Int) -> Unit {
  epoxy_glFogxOES(d_glFogxOES.get(), pname, param)
}

///|
let d_glFogxv : Dispatch = Dispatch::new("glFogxv")

///|
#borrow(param)
extern "c" fn epoxy_glFogxv(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glFogxv"

///|
pub fn gl_fogxv(pname : UInt, param : FixedArray[Int]) -> Unit {
  epoxy_glFogxv(d_glFogxv.get(), pname, param)
}

///|
let d_glFogxvOES : Dispatch = Dispatch::new("glFogxvOES")

///|
#borrow(param)
extern "c" fn epoxy_glFogxvOES(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glFogxvOES"

///|
pub fn gl_fogxv_oes(pname : UInt, param : FixedArray[Int]) -> Unit {
  epoxy_glFogxvOES(d_glFogxvOES.get(), pname, param)
}

///|
let d_glFragmentColorMaterialSGIX : Dispatch = Dispatch::new(
  "glFragmentColorMaterialSGIX",
)

///|
extern "c" fn epoxy_glFragmentColorMaterialSGIX(
  fp : CPtr,
  face : UInt,
  mode : UInt,
) -> Unit = "epoxy_glFragmentColorMaterialSGIX"

///|
pub fn gl_fragment_color_material_sgix(face : UInt, mode : UInt) -> Unit {
  epoxy_glFragmentColorMaterialSGIX(
    d_glFragmentColorMaterialSGIX.get(),
    face,
    mode,
  )
}

///|
let d_glFragmentCoverageColorNV : Dispatch = Dispatch::new(
  "glFragmentCoverageColorNV",
)

///|
extern "c" fn epoxy_glFragmentCoverageColorNV(fp : CPtr, color : UInt) -> Unit = "epoxy_glFragmentCoverageColorNV"

///|
pub fn gl_fragment_coverage_color_nv(color : UInt) -> Unit {
  epoxy_glFragmentCoverageColorNV(d_glFragmentCoverageColorNV.get(), color)
}

///|
let d_glFragmentLightModelfSGIX : Dispatch = Dispatch::new(
  "glFragmentLightModelfSGIX",
)

///|
extern "c" fn epoxy_glFragmentLightModelfSGIX(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glFragmentLightModelfSGIX"

///|
pub fn gl_fragment_light_modelf_sgix(pname : UInt, param : Float) -> Unit {
  epoxy_glFragmentLightModelfSGIX(
    d_glFragmentLightModelfSGIX.get(),
    pname,
    param,
  )
}

///|
let d_glFragmentLightModelfvSGIX : Dispatch = Dispatch::new(
  "glFragmentLightModelfvSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glFragmentLightModelfvSGIX(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glFragmentLightModelfvSGIX"

///|
pub fn gl_fragment_light_modelfv_sgix(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glFragmentLightModelfvSGIX(
    d_glFragmentLightModelfvSGIX.get(),
    pname,
    params,
  )
}

///|
let d_glFragmentLightModeliSGIX : Dispatch = Dispatch::new(
  "glFragmentLightModeliSGIX",
)

///|
extern "c" fn epoxy_glFragmentLightModeliSGIX(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glFragmentLightModeliSGIX"

///|
pub fn gl_fragment_light_modeli_sgix(pname : UInt, param : Int) -> Unit {
  epoxy_glFragmentLightModeliSGIX(
    d_glFragmentLightModeliSGIX.get(),
    pname,
    param,
  )
}

///|
let d_glFragmentLightModelivSGIX : Dispatch = Dispatch::new(
  "glFragmentLightModelivSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glFragmentLightModelivSGIX(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glFragmentLightModelivSGIX"

///|
pub fn gl_fragment_light_modeliv_sgix(
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glFragmentLightModelivSGIX(
    d_glFragmentLightModelivSGIX.get(),
    pname,
    params,
  )
}

///|
let d_glFragmentLightfSGIX : Dispatch = Dispatch::new("glFragmentLightfSGIX")

///|
extern "c" fn epoxy_glFragmentLightfSGIX(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glFragmentLightfSGIX"

///|
pub fn gl_fragment_lightf_sgix(
  light : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glFragmentLightfSGIX(d_glFragmentLightfSGIX.get(), light, pname, param)
}

///|
let d_glFragmentLightfvSGIX : Dispatch = Dispatch::new("glFragmentLightfvSGIX")

///|
#borrow(params)
extern "c" fn epoxy_glFragmentLightfvSGIX(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glFragmentLightfvSGIX"

///|
pub fn gl_fragment_lightfv_sgix(
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glFragmentLightfvSGIX(
    d_glFragmentLightfvSGIX.get(),
    light,
    pname,
    params,
  )
}

///|
let d_glFragmentLightiSGIX : Dispatch = Dispatch::new("glFragmentLightiSGIX")

///|
extern "c" fn epoxy_glFragmentLightiSGIX(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glFragmentLightiSGIX"

///|
pub fn gl_fragment_lighti_sgix(light : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glFragmentLightiSGIX(d_glFragmentLightiSGIX.get(), light, pname, param)
}

///|
let d_glFragmentLightivSGIX : Dispatch = Dispatch::new("glFragmentLightivSGIX")

///|
#borrow(params)
extern "c" fn epoxy_glFragmentLightivSGIX(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glFragmentLightivSGIX"

///|
pub fn gl_fragment_lightiv_sgix(
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glFragmentLightivSGIX(
    d_glFragmentLightivSGIX.get(),
    light,
    pname,
    params,
  )
}

///|
let d_glFragmentMaterialfSGIX : Dispatch = Dispatch::new(
  "glFragmentMaterialfSGIX",
)

///|
extern "c" fn epoxy_glFragmentMaterialfSGIX(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glFragmentMaterialfSGIX"

///|
pub fn gl_fragment_materialf_sgix(
  face : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glFragmentMaterialfSGIX(
    d_glFragmentMaterialfSGIX.get(),
    face,
    pname,
    param,
  )
}

///|
let d_glFragmentMaterialfvSGIX : Dispatch = Dispatch::new(
  "glFragmentMaterialfvSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glFragmentMaterialfvSGIX(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glFragmentMaterialfvSGIX"

///|
pub fn gl_fragment_materialfv_sgix(
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glFragmentMaterialfvSGIX(
    d_glFragmentMaterialfvSGIX.get(),
    face,
    pname,
    params,
  )
}

///|
let d_glFragmentMaterialiSGIX : Dispatch = Dispatch::new(
  "glFragmentMaterialiSGIX",
)

///|
extern "c" fn epoxy_glFragmentMaterialiSGIX(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glFragmentMaterialiSGIX"

///|
pub fn gl_fragment_materiali_sgix(
  face : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glFragmentMaterialiSGIX(
    d_glFragmentMaterialiSGIX.get(),
    face,
    pname,
    param,
  )
}

///|
let d_glFragmentMaterialivSGIX : Dispatch = Dispatch::new(
  "glFragmentMaterialivSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glFragmentMaterialivSGIX(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glFragmentMaterialivSGIX"

///|
pub fn gl_fragment_materialiv_sgix(
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glFragmentMaterialivSGIX(
    d_glFragmentMaterialivSGIX.get(),
    face,
    pname,
    params,
  )
}

///|
let d_glFrameTerminatorGREMEDY : Dispatch = Dispatch::new(
  "glFrameTerminatorGREMEDY",
)

///|
extern "c" fn epoxy_glFrameTerminatorGREMEDY(fp : CPtr) -> Unit = "epoxy_glFrameTerminatorGREMEDY"

///|
pub fn gl_frame_terminator_gremedy() -> Unit {
  epoxy_glFrameTerminatorGREMEDY(d_glFrameTerminatorGREMEDY.get())
}

///|
let d_glFrameZoomSGIX : Dispatch = Dispatch::new("glFrameZoomSGIX")

///|
extern "c" fn epoxy_glFrameZoomSGIX(fp : CPtr, factor : Int) -> Unit = "epoxy_glFrameZoomSGIX"

///|
pub fn gl_frame_zoom_sgix(factor : Int) -> Unit {
  epoxy_glFrameZoomSGIX(d_glFrameZoomSGIX.get(), factor)
}

///|
let d_glFramebufferDrawBufferEXT : Dispatch = Dispatch::new(
  "glFramebufferDrawBufferEXT",
)

///|
extern "c" fn epoxy_glFramebufferDrawBufferEXT(
  fp : CPtr,
  framebuffer : UInt,
  mode : UInt,
) -> Unit = "epoxy_glFramebufferDrawBufferEXT"

///|
pub fn gl_framebuffer_draw_buffer_ext(framebuffer : UInt, mode : UInt) -> Unit {
  epoxy_glFramebufferDrawBufferEXT(
    d_glFramebufferDrawBufferEXT.get(),
    framebuffer,
    mode,
  )
}

///|
let d_glFramebufferDrawBuffersEXT : Dispatch = Dispatch::new(
  "glFramebufferDrawBuffersEXT",
)

///|
#borrow(bufs)
extern "c" fn epoxy_glFramebufferDrawBuffersEXT(
  fp : CPtr,
  framebuffer : UInt,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit = "epoxy_glFramebufferDrawBuffersEXT"

///|
pub fn gl_framebuffer_draw_buffers_ext(
  framebuffer : UInt,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit {
  epoxy_glFramebufferDrawBuffersEXT(
    d_glFramebufferDrawBuffersEXT.get(),
    framebuffer,
    n,
    bufs,
  )
}

///|
let d_glFramebufferFetchBarrierEXT : Dispatch = Dispatch::new(
  "glFramebufferFetchBarrierEXT",
)

///|
extern "c" fn epoxy_glFramebufferFetchBarrierEXT(fp : CPtr) -> Unit = "epoxy_glFramebufferFetchBarrierEXT"

///|
pub fn gl_framebuffer_fetch_barrier_ext() -> Unit {
  epoxy_glFramebufferFetchBarrierEXT(d_glFramebufferFetchBarrierEXT.get())
}

///|
let d_glFramebufferFetchBarrierQCOM : Dispatch = Dispatch::new(
  "glFramebufferFetchBarrierQCOM",
)

///|
extern "c" fn epoxy_glFramebufferFetchBarrierQCOM(fp : CPtr) -> Unit = "epoxy_glFramebufferFetchBarrierQCOM"

///|
pub fn gl_framebuffer_fetch_barrier_qcom() -> Unit {
  epoxy_glFramebufferFetchBarrierQCOM(d_glFramebufferFetchBarrierQCOM.get())
}

///|
let d_glFramebufferFoveationConfigQCOM : Dispatch = Dispatch::new(
  "glFramebufferFoveationConfigQCOM",
)

///|
#borrow(providedFeatures)
extern "c" fn epoxy_glFramebufferFoveationConfigQCOM(
  fp : CPtr,
  framebuffer : UInt,
  numLayers : UInt,
  focalPointsPerLayer : UInt,
  requestedFeatures : UInt,
  providedFeatures : FixedArray[UInt],
) -> Unit = "epoxy_glFramebufferFoveationConfigQCOM"

///|
pub fn gl_framebuffer_foveation_config_qcom(
  framebuffer : UInt,
  numLayers : UInt,
  focalPointsPerLayer : UInt,
  requestedFeatures : UInt,
  providedFeatures : FixedArray[UInt],
) -> Unit {
  epoxy_glFramebufferFoveationConfigQCOM(
    d_glFramebufferFoveationConfigQCOM.get(),
    framebuffer,
    numLayers,
    focalPointsPerLayer,
    requestedFeatures,
    providedFeatures,
  )
}

///|
let d_glFramebufferFoveationParametersQCOM : Dispatch = Dispatch::new(
  "glFramebufferFoveationParametersQCOM",
)

///|
extern "c" fn epoxy_glFramebufferFoveationParametersQCOM(
  fp : CPtr,
  framebuffer : UInt,
  layer : UInt,
  focalPoint : UInt,
  focalX : Float,
  focalY : Float,
  gainX : Float,
  gainY : Float,
  foveaArea : Float,
) -> Unit = "epoxy_glFramebufferFoveationParametersQCOM"

///|
pub fn gl_framebuffer_foveation_parameters_qcom(
  framebuffer : UInt,
  layer : UInt,
  focalPoint : UInt,
  focalX : Float,
  focalY : Float,
  gainX : Float,
  gainY : Float,
  foveaArea : Float,
) -> Unit {
  epoxy_glFramebufferFoveationParametersQCOM(
    d_glFramebufferFoveationParametersQCOM.get(),
    framebuffer,
    layer,
    focalPoint,
    focalX,
    focalY,
    gainX,
    gainY,
    foveaArea,
  )
}

///|
let d_glFramebufferParameteri : Dispatch = Dispatch::new(
  "glFramebufferParameteri",
)

///|
extern "c" fn epoxy_glFramebufferParameteri(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glFramebufferParameteri"

///|
pub fn gl_framebuffer_parameteri(
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glFramebufferParameteri(
    d_glFramebufferParameteri.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glFramebufferPixelLocalStorageSizeEXT : Dispatch = Dispatch::new(
  "glFramebufferPixelLocalStorageSizeEXT",
)

///|
extern "c" fn epoxy_glFramebufferPixelLocalStorageSizeEXT(
  fp : CPtr,
  target : UInt,
  size : Int,
) -> Unit = "epoxy_glFramebufferPixelLocalStorageSizeEXT"

///|
pub fn gl_framebuffer_pixel_local_storage_size_ext(
  target : UInt,
  size : Int,
) -> Unit {
  epoxy_glFramebufferPixelLocalStorageSizeEXT(
    d_glFramebufferPixelLocalStorageSizeEXT.get(),
    target,
    size,
  )
}

///|
let d_glFramebufferReadBufferEXT : Dispatch = Dispatch::new(
  "glFramebufferReadBufferEXT",
)

///|
extern "c" fn epoxy_glFramebufferReadBufferEXT(
  fp : CPtr,
  framebuffer : UInt,
  mode : UInt,
) -> Unit = "epoxy_glFramebufferReadBufferEXT"

///|
pub fn gl_framebuffer_read_buffer_ext(framebuffer : UInt, mode : UInt) -> Unit {
  epoxy_glFramebufferReadBufferEXT(
    d_glFramebufferReadBufferEXT.get(),
    framebuffer,
    mode,
  )
}

///|
let d_glFramebufferRenderbuffer : Dispatch = Dispatch::with_aliases(
  "glFramebufferRenderbuffer",
  ["glFramebufferRenderbufferEXT"],
)

///|
extern "c" fn epoxy_glFramebufferRenderbuffer(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glFramebufferRenderbuffer"

///|
pub fn gl_framebuffer_renderbuffer(
  target : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit {
  epoxy_glFramebufferRenderbuffer(
    d_glFramebufferRenderbuffer.get(),
    target,
    attachment,
    renderbuffertarget,
    renderbuffer,
  )
}

///|
let d_glFramebufferRenderbufferEXT : Dispatch = Dispatch::with_aliases(
  "glFramebufferRenderbufferEXT",
  ["glFramebufferRenderbuffer"],
)

///|
extern "c" fn epoxy_glFramebufferRenderbufferEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glFramebufferRenderbufferEXT"

///|
pub fn gl_framebuffer_renderbuffer_ext(
  target : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit {
  epoxy_glFramebufferRenderbufferEXT(
    d_glFramebufferRenderbufferEXT.get(),
    target,
    attachment,
    renderbuffertarget,
    renderbuffer,
  )
}

///|
let d_glFramebufferRenderbufferOES : Dispatch = Dispatch::new(
  "glFramebufferRenderbufferOES",
)

///|
extern "c" fn epoxy_glFramebufferRenderbufferOES(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glFramebufferRenderbufferOES"

///|
pub fn gl_framebuffer_renderbuffer_oes(
  target : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit {
  epoxy_glFramebufferRenderbufferOES(
    d_glFramebufferRenderbufferOES.get(),
    target,
    attachment,
    renderbuffertarget,
    renderbuffer,
  )
}

///|
let d_glFramebufferSampleLocationsfvARB : Dispatch = Dispatch::new(
  "glFramebufferSampleLocationsfvARB",
)

///|
#borrow(v)
extern "c" fn epoxy_glFramebufferSampleLocationsfvARB(
  fp : CPtr,
  target : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glFramebufferSampleLocationsfvARB"

///|
pub fn gl_framebuffer_sample_locationsfv_arb(
  target : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glFramebufferSampleLocationsfvARB(
    d_glFramebufferSampleLocationsfvARB.get(),
    target,
    start,
    count,
    v,
  )
}

///|
let d_glFramebufferSampleLocationsfvNV : Dispatch = Dispatch::new(
  "glFramebufferSampleLocationsfvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glFramebufferSampleLocationsfvNV(
  fp : CPtr,
  target : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glFramebufferSampleLocationsfvNV"

///|
pub fn gl_framebuffer_sample_locationsfv_nv(
  target : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glFramebufferSampleLocationsfvNV(
    d_glFramebufferSampleLocationsfvNV.get(),
    target,
    start,
    count,
    v,
  )
}

///|
let d_glFramebufferSamplePositionsfvAMD : Dispatch = Dispatch::new(
  "glFramebufferSamplePositionsfvAMD",
)

///|
#borrow(values)
extern "c" fn epoxy_glFramebufferSamplePositionsfvAMD(
  fp : CPtr,
  target : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  values : FixedArray[Float],
) -> Unit = "epoxy_glFramebufferSamplePositionsfvAMD"

///|
pub fn gl_framebuffer_sample_positionsfv_amd(
  target : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  values : FixedArray[Float],
) -> Unit {
  epoxy_glFramebufferSamplePositionsfvAMD(
    d_glFramebufferSamplePositionsfvAMD.get(),
    target,
    numsamples,
    pixelindex,
    values,
  )
}

///|
let d_glFramebufferShadingRateEXT : Dispatch = Dispatch::new(
  "glFramebufferShadingRateEXT",
)

///|
extern "c" fn epoxy_glFramebufferShadingRateEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  baseLayer : Int,
  numLayers : Int,
  texelWidth : Int,
  texelHeight : Int,
) -> Unit = "epoxy_glFramebufferShadingRateEXT"

///|
pub fn gl_framebuffer_shading_rate_ext(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  baseLayer : Int,
  numLayers : Int,
  texelWidth : Int,
  texelHeight : Int,
) -> Unit {
  epoxy_glFramebufferShadingRateEXT(
    d_glFramebufferShadingRateEXT.get(),
    target,
    attachment,
    texture,
    baseLayer,
    numLayers,
    texelWidth,
    texelHeight,
  )
}

///|
let d_glFramebufferTexture : Dispatch = Dispatch::with_aliases(
  "glFramebufferTexture",
  [
    "glFramebufferTextureARB", "glFramebufferTextureEXT", "glFramebufferTextureOES",
  ],
)

///|
extern "c" fn epoxy_glFramebufferTexture(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTexture"

///|
pub fn gl_framebuffer_texture(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTexture(
    d_glFramebufferTexture.get(),
    target,
    attachment,
    texture,
    level,
  )
}

///|
let d_glFramebufferTexture1D : Dispatch = Dispatch::with_aliases(
  "glFramebufferTexture1D",
  ["glFramebufferTexture1DEXT"],
)

///|
extern "c" fn epoxy_glFramebufferTexture1D(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTexture1D"

///|
pub fn gl_framebuffer_texture1_d(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTexture1D(
    d_glFramebufferTexture1D.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
  )
}

///|
let d_glFramebufferTexture1DEXT : Dispatch = Dispatch::with_aliases(
  "glFramebufferTexture1DEXT",
  ["glFramebufferTexture1D"],
)

///|
extern "c" fn epoxy_glFramebufferTexture1DEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTexture1DEXT"

///|
pub fn gl_framebuffer_texture1_dext(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTexture1DEXT(
    d_glFramebufferTexture1DEXT.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
  )
}

///|
let d_glFramebufferTexture2D : Dispatch = Dispatch::with_aliases(
  "glFramebufferTexture2D",
  ["glFramebufferTexture2DEXT"],
)

///|
extern "c" fn epoxy_glFramebufferTexture2D(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTexture2D"

///|
pub fn gl_framebuffer_texture2_d(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTexture2D(
    d_glFramebufferTexture2D.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
  )
}

///|
let d_glFramebufferTexture2DEXT : Dispatch = Dispatch::with_aliases(
  "glFramebufferTexture2DEXT",
  ["glFramebufferTexture2D"],
)

///|
extern "c" fn epoxy_glFramebufferTexture2DEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTexture2DEXT"

///|
pub fn gl_framebuffer_texture2_dext(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTexture2DEXT(
    d_glFramebufferTexture2DEXT.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
  )
}

///|
let d_glFramebufferTexture2DDownsampleIMG : Dispatch = Dispatch::new(
  "glFramebufferTexture2DDownsampleIMG",
)

///|
extern "c" fn epoxy_glFramebufferTexture2DDownsampleIMG(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  xscale : Int,
  yscale : Int,
) -> Unit = "epoxy_glFramebufferTexture2DDownsampleIMG"

///|
pub fn gl_framebuffer_texture2_d_downsample_img(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  xscale : Int,
  yscale : Int,
) -> Unit {
  epoxy_glFramebufferTexture2DDownsampleIMG(
    d_glFramebufferTexture2DDownsampleIMG.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
    xscale,
    yscale,
  )
}

///|
let d_glFramebufferTexture2DMultisampleEXT : Dispatch = Dispatch::new(
  "glFramebufferTexture2DMultisampleEXT",
)

///|
extern "c" fn epoxy_glFramebufferTexture2DMultisampleEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  samples : Int,
) -> Unit = "epoxy_glFramebufferTexture2DMultisampleEXT"

///|
pub fn gl_framebuffer_texture2_d_multisample_ext(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  samples : Int,
) -> Unit {
  epoxy_glFramebufferTexture2DMultisampleEXT(
    d_glFramebufferTexture2DMultisampleEXT.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
    samples,
  )
}

///|
let d_glFramebufferTexture2DMultisampleIMG : Dispatch = Dispatch::new(
  "glFramebufferTexture2DMultisampleIMG",
)

///|
extern "c" fn epoxy_glFramebufferTexture2DMultisampleIMG(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  samples : Int,
) -> Unit = "epoxy_glFramebufferTexture2DMultisampleIMG"

///|
pub fn gl_framebuffer_texture2_d_multisample_img(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  samples : Int,
) -> Unit {
  epoxy_glFramebufferTexture2DMultisampleIMG(
    d_glFramebufferTexture2DMultisampleIMG.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
    samples,
  )
}

///|
let d_glFramebufferTexture2DOES : Dispatch = Dispatch::new(
  "glFramebufferTexture2DOES",
)

///|
extern "c" fn epoxy_glFramebufferTexture2DOES(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTexture2DOES"

///|
pub fn gl_framebuffer_texture2_does(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTexture2DOES(
    d_glFramebufferTexture2DOES.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
  )
}

///|
let d_glFramebufferTexture3D : Dispatch = Dispatch::with_aliases(
  "glFramebufferTexture3D",
  ["glFramebufferTexture3DEXT"],
)

///|
extern "c" fn epoxy_glFramebufferTexture3D(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit = "epoxy_glFramebufferTexture3D"

///|
pub fn gl_framebuffer_texture3_d(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit {
  epoxy_glFramebufferTexture3D(
    d_glFramebufferTexture3D.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
    zoffset,
  )
}

///|
let d_glFramebufferTexture3DEXT : Dispatch = Dispatch::with_aliases(
  "glFramebufferTexture3DEXT",
  ["glFramebufferTexture3D"],
)

///|
extern "c" fn epoxy_glFramebufferTexture3DEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit = "epoxy_glFramebufferTexture3DEXT"

///|
pub fn gl_framebuffer_texture3_dext(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit {
  epoxy_glFramebufferTexture3DEXT(
    d_glFramebufferTexture3DEXT.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
    zoffset,
  )
}

///|
let d_glFramebufferTexture3DOES : Dispatch = Dispatch::new(
  "glFramebufferTexture3DOES",
)

///|
extern "c" fn epoxy_glFramebufferTexture3DOES(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit = "epoxy_glFramebufferTexture3DOES"

///|
pub fn gl_framebuffer_texture3_does(
  target : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit {
  epoxy_glFramebufferTexture3DOES(
    d_glFramebufferTexture3DOES.get(),
    target,
    attachment,
    textarget,
    texture,
    level,
    zoffset,
  )
}

///|
let d_glFramebufferTextureARB : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureARB",
  ["glFramebufferTexture", "glFramebufferTextureEXT", "glFramebufferTextureOES"],
)

///|
extern "c" fn epoxy_glFramebufferTextureARB(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTextureARB"

///|
pub fn gl_framebuffer_texture_arb(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTextureARB(
    d_glFramebufferTextureARB.get(),
    target,
    attachment,
    texture,
    level,
  )
}

///|
let d_glFramebufferTextureEXT : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureEXT",
  ["glFramebufferTexture", "glFramebufferTextureARB", "glFramebufferTextureOES"],
)

///|
extern "c" fn epoxy_glFramebufferTextureEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTextureEXT"

///|
pub fn gl_framebuffer_texture_ext(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTextureEXT(
    d_glFramebufferTextureEXT.get(),
    target,
    attachment,
    texture,
    level,
  )
}

///|
let d_glFramebufferTextureFaceARB : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureFaceARB",
  ["glFramebufferTextureFaceEXT"],
)

///|
extern "c" fn epoxy_glFramebufferTextureFaceARB(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  face : UInt,
) -> Unit = "epoxy_glFramebufferTextureFaceARB"

///|
pub fn gl_framebuffer_texture_face_arb(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  face : UInt,
) -> Unit {
  epoxy_glFramebufferTextureFaceARB(
    d_glFramebufferTextureFaceARB.get(),
    target,
    attachment,
    texture,
    level,
    face,
  )
}

///|
let d_glFramebufferTextureFaceEXT : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureFaceEXT",
  ["glFramebufferTextureFaceARB"],
)

///|
extern "c" fn epoxy_glFramebufferTextureFaceEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  face : UInt,
) -> Unit = "epoxy_glFramebufferTextureFaceEXT"

///|
pub fn gl_framebuffer_texture_face_ext(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  face : UInt,
) -> Unit {
  epoxy_glFramebufferTextureFaceEXT(
    d_glFramebufferTextureFaceEXT.get(),
    target,
    attachment,
    texture,
    level,
    face,
  )
}

///|
let d_glFramebufferTextureLayer : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureLayer",
  ["glFramebufferTextureLayerARB", "glFramebufferTextureLayerEXT"],
)

///|
extern "c" fn epoxy_glFramebufferTextureLayer(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit = "epoxy_glFramebufferTextureLayer"

///|
pub fn gl_framebuffer_texture_layer(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit {
  epoxy_glFramebufferTextureLayer(
    d_glFramebufferTextureLayer.get(),
    target,
    attachment,
    texture,
    level,
    layer,
  )
}

///|
let d_glFramebufferTextureLayerARB : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureLayerARB",
  ["glFramebufferTextureLayer", "glFramebufferTextureLayerEXT"],
)

///|
extern "c" fn epoxy_glFramebufferTextureLayerARB(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit = "epoxy_glFramebufferTextureLayerARB"

///|
pub fn gl_framebuffer_texture_layer_arb(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit {
  epoxy_glFramebufferTextureLayerARB(
    d_glFramebufferTextureLayerARB.get(),
    target,
    attachment,
    texture,
    level,
    layer,
  )
}

///|
let d_glFramebufferTextureLayerEXT : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureLayerEXT",
  ["glFramebufferTextureLayer", "glFramebufferTextureLayerARB"],
)

///|
extern "c" fn epoxy_glFramebufferTextureLayerEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit = "epoxy_glFramebufferTextureLayerEXT"

///|
pub fn gl_framebuffer_texture_layer_ext(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit {
  epoxy_glFramebufferTextureLayerEXT(
    d_glFramebufferTextureLayerEXT.get(),
    target,
    attachment,
    texture,
    level,
    layer,
  )
}

///|
let d_glFramebufferTextureLayerDownsampleIMG : Dispatch = Dispatch::new(
  "glFramebufferTextureLayerDownsampleIMG",
)

///|
extern "c" fn epoxy_glFramebufferTextureLayerDownsampleIMG(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
  xscale : Int,
  yscale : Int,
) -> Unit = "epoxy_glFramebufferTextureLayerDownsampleIMG"

///|
pub fn gl_framebuffer_texture_layer_downsample_img(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
  xscale : Int,
  yscale : Int,
) -> Unit {
  epoxy_glFramebufferTextureLayerDownsampleIMG(
    d_glFramebufferTextureLayerDownsampleIMG.get(),
    target,
    attachment,
    texture,
    level,
    layer,
    xscale,
    yscale,
  )
}

///|
let d_glFramebufferTextureMultisampleMultiviewOVR : Dispatch = Dispatch::new(
  "glFramebufferTextureMultisampleMultiviewOVR",
)

///|
extern "c" fn epoxy_glFramebufferTextureMultisampleMultiviewOVR(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  samples : Int,
  baseViewIndex : Int,
  numViews : Int,
) -> Unit = "epoxy_glFramebufferTextureMultisampleMultiviewOVR"

///|
pub fn gl_framebuffer_texture_multisample_multiview_ovr(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  samples : Int,
  baseViewIndex : Int,
  numViews : Int,
) -> Unit {
  epoxy_glFramebufferTextureMultisampleMultiviewOVR(
    d_glFramebufferTextureMultisampleMultiviewOVR.get(),
    target,
    attachment,
    texture,
    level,
    samples,
    baseViewIndex,
    numViews,
  )
}

///|
let d_glFramebufferTextureMultiviewOVR : Dispatch = Dispatch::new(
  "glFramebufferTextureMultiviewOVR",
)

///|
extern "c" fn epoxy_glFramebufferTextureMultiviewOVR(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  baseViewIndex : Int,
  numViews : Int,
) -> Unit = "epoxy_glFramebufferTextureMultiviewOVR"

///|
pub fn gl_framebuffer_texture_multiview_ovr(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  baseViewIndex : Int,
  numViews : Int,
) -> Unit {
  epoxy_glFramebufferTextureMultiviewOVR(
    d_glFramebufferTextureMultiviewOVR.get(),
    target,
    attachment,
    texture,
    level,
    baseViewIndex,
    numViews,
  )
}

///|
let d_glFramebufferTextureOES : Dispatch = Dispatch::with_aliases(
  "glFramebufferTextureOES",
  ["glFramebufferTexture", "glFramebufferTextureARB", "glFramebufferTextureEXT"],
)

///|
extern "c" fn epoxy_glFramebufferTextureOES(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glFramebufferTextureOES"

///|
pub fn gl_framebuffer_texture_oes(
  target : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glFramebufferTextureOES(
    d_glFramebufferTextureOES.get(),
    target,
    attachment,
    texture,
    level,
  )
}

///|
let d_glFreeObjectBufferATI : Dispatch = Dispatch::new("glFreeObjectBufferATI")

///|
extern "c" fn epoxy_glFreeObjectBufferATI(fp : CPtr, buffer : UInt) -> Unit = "epoxy_glFreeObjectBufferATI"

///|
pub fn gl_free_object_buffer_ati(buffer : UInt) -> Unit {
  epoxy_glFreeObjectBufferATI(d_glFreeObjectBufferATI.get(), buffer)
}

///|
let d_glFrontFace : Dispatch = Dispatch::new("glFrontFace")

///|
extern "c" fn epoxy_glFrontFace(fp : CPtr, mode : UInt) -> Unit = "epoxy_glFrontFace"

///|
pub fn gl_front_face(mode : UInt) -> Unit {
  epoxy_glFrontFace(d_glFrontFace.get(), mode)
}

///|
let d_glFrustum : Dispatch = Dispatch::new("glFrustum")

///|
extern "c" fn epoxy_glFrustum(
  fp : CPtr,
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit = "epoxy_glFrustum"

///|
pub fn gl_frustum(
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit {
  epoxy_glFrustum(d_glFrustum.get(), left, right, bottom, top, zNear, zFar)
}

///|
let d_glFrustumf : Dispatch = Dispatch::new("glFrustumf")

///|
extern "c" fn epoxy_glFrustumf(
  fp : CPtr,
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit = "epoxy_glFrustumf"

///|
pub fn gl_frustumf(
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit {
  epoxy_glFrustumf(d_glFrustumf.get(), l, r, b, t, n, f)
}

///|
let d_glFrustumfOES : Dispatch = Dispatch::new("glFrustumfOES")

///|
extern "c" fn epoxy_glFrustumfOES(
  fp : CPtr,
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit = "epoxy_glFrustumfOES"

///|
pub fn gl_frustumf_oes(
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit {
  epoxy_glFrustumfOES(d_glFrustumfOES.get(), l, r, b, t, n, f)
}

///|
let d_glFrustumx : Dispatch = Dispatch::new("glFrustumx")

///|
extern "c" fn epoxy_glFrustumx(
  fp : CPtr,
  l : Int,
  r : Int,
  b : Int,
  t : Int,
  n : Int,
  f : Int,
) -> Unit = "epoxy_glFrustumx"

///|
pub fn gl_frustumx(
  l : Int,
  r : Int,
  b : Int,
  t : Int,
  n : Int,
  f : Int,
) -> Unit {
  epoxy_glFrustumx(d_glFrustumx.get(), l, r, b, t, n, f)
}

///|
let d_glFrustumxOES : Dispatch = Dispatch::new("glFrustumxOES")

///|
extern "c" fn epoxy_glFrustumxOES(
  fp : CPtr,
  l : Int,
  r : Int,
  b : Int,
  t : Int,
  n : Int,
  f : Int,
) -> Unit = "epoxy_glFrustumxOES"

///|
pub fn gl_frustumx_oes(
  l : Int,
  r : Int,
  b : Int,
  t : Int,
  n : Int,
  f : Int,
) -> Unit {
  epoxy_glFrustumxOES(d_glFrustumxOES.get(), l, r, b, t, n, f)
}

///|
let d_glGenAsyncMarkersSGIX : Dispatch = Dispatch::new("glGenAsyncMarkersSGIX")

///|
extern "c" fn epoxy_glGenAsyncMarkersSGIX(fp : CPtr, range : Int) -> UInt = "epoxy_glGenAsyncMarkersSGIX"

///|
pub fn gl_gen_async_markers_sgix(range : Int) -> UInt {
  epoxy_glGenAsyncMarkersSGIX(d_glGenAsyncMarkersSGIX.get(), range)
}

///|
let d_glGenBuffers : Dispatch = Dispatch::with_aliases("glGenBuffers", [
  "glGenBuffersARB",
])

///|
#borrow(buffers)
extern "c" fn epoxy_glGenBuffers(
  fp : CPtr,
  n : Int,
  buffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenBuffers"

///|
pub fn gl_gen_buffers(n : Int, buffers : FixedArray[UInt]) -> Unit {
  epoxy_glGenBuffers(d_glGenBuffers.get(), n, buffers)
}

///|
let d_glGenBuffersARB : Dispatch = Dispatch::with_aliases("glGenBuffersARB", [
  "glGenBuffers",
])

///|
#borrow(buffers)
extern "c" fn epoxy_glGenBuffersARB(
  fp : CPtr,
  n : Int,
  buffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenBuffersARB"

///|
pub fn gl_gen_buffers_arb(n : Int, buffers : FixedArray[UInt]) -> Unit {
  epoxy_glGenBuffersARB(d_glGenBuffersARB.get(), n, buffers)
}

///|
let d_glGenFencesAPPLE : Dispatch = Dispatch::new("glGenFencesAPPLE")

///|
#borrow(fences)
extern "c" fn epoxy_glGenFencesAPPLE(
  fp : CPtr,
  n : Int,
  fences : FixedArray[UInt],
) -> Unit = "epoxy_glGenFencesAPPLE"

///|
pub fn gl_gen_fences_apple(n : Int, fences : FixedArray[UInt]) -> Unit {
  epoxy_glGenFencesAPPLE(d_glGenFencesAPPLE.get(), n, fences)
}

///|
let d_glGenFencesNV : Dispatch = Dispatch::new("glGenFencesNV")

///|
#borrow(fences)
extern "c" fn epoxy_glGenFencesNV(
  fp : CPtr,
  n : Int,
  fences : FixedArray[UInt],
) -> Unit = "epoxy_glGenFencesNV"

///|
pub fn gl_gen_fences_nv(n : Int, fences : FixedArray[UInt]) -> Unit {
  epoxy_glGenFencesNV(d_glGenFencesNV.get(), n, fences)
}

///|
let d_glGenFragmentShadersATI : Dispatch = Dispatch::new(
  "glGenFragmentShadersATI",
)

///|
extern "c" fn epoxy_glGenFragmentShadersATI(fp : CPtr, range : UInt) -> UInt = "epoxy_glGenFragmentShadersATI"

///|
pub fn gl_gen_fragment_shaders_ati(range : UInt) -> UInt {
  epoxy_glGenFragmentShadersATI(d_glGenFragmentShadersATI.get(), range)
}

///|
let d_glGenFramebuffers : Dispatch = Dispatch::with_aliases(
  "glGenFramebuffers",
  ["glGenFramebuffersEXT"],
)

///|
#borrow(framebuffers)
extern "c" fn epoxy_glGenFramebuffers(
  fp : CPtr,
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenFramebuffers"

///|
pub fn gl_gen_framebuffers(n : Int, framebuffers : FixedArray[UInt]) -> Unit {
  epoxy_glGenFramebuffers(d_glGenFramebuffers.get(), n, framebuffers)
}

///|
let d_glGenFramebuffersEXT : Dispatch = Dispatch::with_aliases(
  "glGenFramebuffersEXT",
  ["glGenFramebuffers"],
)

///|
#borrow(framebuffers)
extern "c" fn epoxy_glGenFramebuffersEXT(
  fp : CPtr,
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenFramebuffersEXT"

///|
pub fn gl_gen_framebuffers_ext(
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glGenFramebuffersEXT(d_glGenFramebuffersEXT.get(), n, framebuffers)
}

///|
let d_glGenFramebuffersOES : Dispatch = Dispatch::new("glGenFramebuffersOES")

///|
#borrow(framebuffers)
extern "c" fn epoxy_glGenFramebuffersOES(
  fp : CPtr,
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenFramebuffersOES"

///|
pub fn gl_gen_framebuffers_oes(
  n : Int,
  framebuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glGenFramebuffersOES(d_glGenFramebuffersOES.get(), n, framebuffers)
}

///|
let d_glGenLists : Dispatch = Dispatch::new("glGenLists")

///|
extern "c" fn epoxy_glGenLists(fp : CPtr, range : Int) -> UInt = "epoxy_glGenLists"

///|
pub fn gl_gen_lists(range : Int) -> UInt {
  epoxy_glGenLists(d_glGenLists.get(), range)
}

///|
let d_glGenNamesAMD : Dispatch = Dispatch::new("glGenNamesAMD")

///|
#borrow(names)
extern "c" fn epoxy_glGenNamesAMD(
  fp : CPtr,
  identifier : UInt,
  num : UInt,
  names : FixedArray[UInt],
) -> Unit = "epoxy_glGenNamesAMD"

///|
pub fn gl_gen_names_amd(
  identifier : UInt,
  num : UInt,
  names : FixedArray[UInt],
) -> Unit {
  epoxy_glGenNamesAMD(d_glGenNamesAMD.get(), identifier, num, names)
}

///|
let d_glGenOcclusionQueriesNV : Dispatch = Dispatch::new(
  "glGenOcclusionQueriesNV",
)

///|
#borrow(ids)
extern "c" fn epoxy_glGenOcclusionQueriesNV(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glGenOcclusionQueriesNV"

///|
pub fn gl_gen_occlusion_queries_nv(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glGenOcclusionQueriesNV(d_glGenOcclusionQueriesNV.get(), n, ids)
}

///|
let d_glGenPathsNV : Dispatch = Dispatch::new("glGenPathsNV")

///|
extern "c" fn epoxy_glGenPathsNV(fp : CPtr, range : Int) -> UInt = "epoxy_glGenPathsNV"

///|
pub fn gl_gen_paths_nv(range : Int) -> UInt {
  epoxy_glGenPathsNV(d_glGenPathsNV.get(), range)
}

///|
let d_glGenPerfMonitorsAMD : Dispatch = Dispatch::new("glGenPerfMonitorsAMD")

///|
#borrow(monitors)
extern "c" fn epoxy_glGenPerfMonitorsAMD(
  fp : CPtr,
  n : Int,
  monitors : FixedArray[UInt],
) -> Unit = "epoxy_glGenPerfMonitorsAMD"

///|
pub fn gl_gen_perf_monitors_amd(n : Int, monitors : FixedArray[UInt]) -> Unit {
  epoxy_glGenPerfMonitorsAMD(d_glGenPerfMonitorsAMD.get(), n, monitors)
}

///|
let d_glGenProgramPipelines : Dispatch = Dispatch::new("glGenProgramPipelines")

///|
#borrow(pipelines)
extern "c" fn epoxy_glGenProgramPipelines(
  fp : CPtr,
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit = "epoxy_glGenProgramPipelines"

///|
pub fn gl_gen_program_pipelines(n : Int, pipelines : FixedArray[UInt]) -> Unit {
  epoxy_glGenProgramPipelines(d_glGenProgramPipelines.get(), n, pipelines)
}

///|
let d_glGenProgramPipelinesEXT : Dispatch = Dispatch::new(
  "glGenProgramPipelinesEXT",
)

///|
#borrow(pipelines)
extern "c" fn epoxy_glGenProgramPipelinesEXT(
  fp : CPtr,
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit = "epoxy_glGenProgramPipelinesEXT"

///|
pub fn gl_gen_program_pipelines_ext(
  n : Int,
  pipelines : FixedArray[UInt],
) -> Unit {
  epoxy_glGenProgramPipelinesEXT(d_glGenProgramPipelinesEXT.get(), n, pipelines)
}

///|
let d_glGenProgramsARB : Dispatch = Dispatch::with_aliases("glGenProgramsARB", [
  "glGenProgramsNV",
])

///|
#borrow(programs)
extern "c" fn epoxy_glGenProgramsARB(
  fp : CPtr,
  n : Int,
  programs : FixedArray[UInt],
) -> Unit = "epoxy_glGenProgramsARB"

///|
pub fn gl_gen_programs_arb(n : Int, programs : FixedArray[UInt]) -> Unit {
  epoxy_glGenProgramsARB(d_glGenProgramsARB.get(), n, programs)
}

///|
let d_glGenProgramsNV : Dispatch = Dispatch::with_aliases("glGenProgramsNV", [
  "glGenProgramsARB",
])

///|
#borrow(programs)
extern "c" fn epoxy_glGenProgramsNV(
  fp : CPtr,
  n : Int,
  programs : FixedArray[UInt],
) -> Unit = "epoxy_glGenProgramsNV"

///|
pub fn gl_gen_programs_nv(n : Int, programs : FixedArray[UInt]) -> Unit {
  epoxy_glGenProgramsNV(d_glGenProgramsNV.get(), n, programs)
}

///|
let d_glGenQueries : Dispatch = Dispatch::with_aliases("glGenQueries", [
  "glGenQueriesARB",
])

///|
#borrow(ids)
extern "c" fn epoxy_glGenQueries(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glGenQueries"

///|
pub fn gl_gen_queries(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glGenQueries(d_glGenQueries.get(), n, ids)
}

///|
let d_glGenQueriesARB : Dispatch = Dispatch::with_aliases("glGenQueriesARB", [
  "glGenQueries",
])

///|
#borrow(ids)
extern "c" fn epoxy_glGenQueriesARB(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glGenQueriesARB"

///|
pub fn gl_gen_queries_arb(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glGenQueriesARB(d_glGenQueriesARB.get(), n, ids)
}

///|
let d_glGenQueriesEXT : Dispatch = Dispatch::new("glGenQueriesEXT")

///|
#borrow(ids)
extern "c" fn epoxy_glGenQueriesEXT(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glGenQueriesEXT"

///|
pub fn gl_gen_queries_ext(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glGenQueriesEXT(d_glGenQueriesEXT.get(), n, ids)
}

///|
let d_glGenQueryResourceTagNV : Dispatch = Dispatch::new(
  "glGenQueryResourceTagNV",
)

///|
#borrow(tagIds)
extern "c" fn epoxy_glGenQueryResourceTagNV(
  fp : CPtr,
  n : Int,
  tagIds : FixedArray[Int],
) -> Unit = "epoxy_glGenQueryResourceTagNV"

///|
pub fn gl_gen_query_resource_tag_nv(n : Int, tagIds : FixedArray[Int]) -> Unit {
  epoxy_glGenQueryResourceTagNV(d_glGenQueryResourceTagNV.get(), n, tagIds)
}

///|
let d_glGenRenderbuffers : Dispatch = Dispatch::with_aliases(
  "glGenRenderbuffers",
  ["glGenRenderbuffersEXT"],
)

///|
#borrow(renderbuffers)
extern "c" fn epoxy_glGenRenderbuffers(
  fp : CPtr,
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenRenderbuffers"

///|
pub fn gl_gen_renderbuffers(n : Int, renderbuffers : FixedArray[UInt]) -> Unit {
  epoxy_glGenRenderbuffers(d_glGenRenderbuffers.get(), n, renderbuffers)
}

///|
let d_glGenRenderbuffersEXT : Dispatch = Dispatch::with_aliases(
  "glGenRenderbuffersEXT",
  ["glGenRenderbuffers"],
)

///|
#borrow(renderbuffers)
extern "c" fn epoxy_glGenRenderbuffersEXT(
  fp : CPtr,
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenRenderbuffersEXT"

///|
pub fn gl_gen_renderbuffers_ext(
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glGenRenderbuffersEXT(d_glGenRenderbuffersEXT.get(), n, renderbuffers)
}

///|
let d_glGenRenderbuffersOES : Dispatch = Dispatch::new("glGenRenderbuffersOES")

///|
#borrow(renderbuffers)
extern "c" fn epoxy_glGenRenderbuffersOES(
  fp : CPtr,
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit = "epoxy_glGenRenderbuffersOES"

///|
pub fn gl_gen_renderbuffers_oes(
  n : Int,
  renderbuffers : FixedArray[UInt],
) -> Unit {
  epoxy_glGenRenderbuffersOES(d_glGenRenderbuffersOES.get(), n, renderbuffers)
}

///|
let d_glGenSamplers : Dispatch = Dispatch::new("glGenSamplers")

///|
#borrow(samplers)
extern "c" fn epoxy_glGenSamplers(
  fp : CPtr,
  count : Int,
  samplers : FixedArray[UInt],
) -> Unit = "epoxy_glGenSamplers"

///|
pub fn gl_gen_samplers(count : Int, samplers : FixedArray[UInt]) -> Unit {
  epoxy_glGenSamplers(d_glGenSamplers.get(), count, samplers)
}

///|
let d_glGenSemaphoresEXT : Dispatch = Dispatch::new("glGenSemaphoresEXT")

///|
#borrow(semaphores)
extern "c" fn epoxy_glGenSemaphoresEXT(
  fp : CPtr,
  n : Int,
  semaphores : FixedArray[UInt],
) -> Unit = "epoxy_glGenSemaphoresEXT"

///|
pub fn gl_gen_semaphores_ext(n : Int, semaphores : FixedArray[UInt]) -> Unit {
  epoxy_glGenSemaphoresEXT(d_glGenSemaphoresEXT.get(), n, semaphores)
}

///|
let d_glGenSymbolsEXT : Dispatch = Dispatch::new("glGenSymbolsEXT")

///|
extern "c" fn epoxy_glGenSymbolsEXT(
  fp : CPtr,
  datatype : UInt,
  storagetype : UInt,
  range : UInt,
  components : UInt,
) -> UInt = "epoxy_glGenSymbolsEXT"

///|
pub fn gl_gen_symbols_ext(
  datatype : UInt,
  storagetype : UInt,
  range : UInt,
  components : UInt,
) -> UInt {
  epoxy_glGenSymbolsEXT(
    d_glGenSymbolsEXT.get(),
    datatype,
    storagetype,
    range,
    components,
  )
}

///|
let d_glGenTextures : Dispatch = Dispatch::new("glGenTextures")

///|
#borrow(textures)
extern "c" fn epoxy_glGenTextures(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
) -> Unit = "epoxy_glGenTextures"

///|
pub fn gl_gen_textures(n : Int, textures : FixedArray[UInt]) -> Unit {
  epoxy_glGenTextures(d_glGenTextures.get(), n, textures)
}

///|
let d_glGenTexturesEXT : Dispatch = Dispatch::new("glGenTexturesEXT")

///|
#borrow(textures)
extern "c" fn epoxy_glGenTexturesEXT(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
) -> Unit = "epoxy_glGenTexturesEXT"

///|
pub fn gl_gen_textures_ext(n : Int, textures : FixedArray[UInt]) -> Unit {
  epoxy_glGenTexturesEXT(d_glGenTexturesEXT.get(), n, textures)
}

///|
let d_glGenTransformFeedbacks : Dispatch = Dispatch::with_aliases(
  "glGenTransformFeedbacks",
  ["glGenTransformFeedbacksNV"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glGenTransformFeedbacks(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glGenTransformFeedbacks"

///|
pub fn gl_gen_transform_feedbacks(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glGenTransformFeedbacks(d_glGenTransformFeedbacks.get(), n, ids)
}

///|
let d_glGenTransformFeedbacksNV : Dispatch = Dispatch::with_aliases(
  "glGenTransformFeedbacksNV",
  ["glGenTransformFeedbacks"],
)

///|
#borrow(ids)
extern "c" fn epoxy_glGenTransformFeedbacksNV(
  fp : CPtr,
  n : Int,
  ids : FixedArray[UInt],
) -> Unit = "epoxy_glGenTransformFeedbacksNV"

///|
pub fn gl_gen_transform_feedbacks_nv(n : Int, ids : FixedArray[UInt]) -> Unit {
  epoxy_glGenTransformFeedbacksNV(d_glGenTransformFeedbacksNV.get(), n, ids)
}

///|
let d_glGenVertexArrays : Dispatch = Dispatch::with_aliases(
  "glGenVertexArrays",
  ["glGenVertexArraysAPPLE", "glGenVertexArraysOES"],
)

///|
#borrow(arrays)
extern "c" fn epoxy_glGenVertexArrays(
  fp : CPtr,
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit = "epoxy_glGenVertexArrays"

///|
pub fn gl_gen_vertex_arrays(n : Int, arrays : FixedArray[UInt]) -> Unit {
  epoxy_glGenVertexArrays(d_glGenVertexArrays.get(), n, arrays)
}

///|
let d_glGenVertexArraysAPPLE : Dispatch = Dispatch::with_aliases(
  "glGenVertexArraysAPPLE",
  ["glGenVertexArrays", "glGenVertexArraysOES"],
)

///|
#borrow(arrays)
extern "c" fn epoxy_glGenVertexArraysAPPLE(
  fp : CPtr,
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit = "epoxy_glGenVertexArraysAPPLE"

///|
pub fn gl_gen_vertex_arrays_apple(n : Int, arrays : FixedArray[UInt]) -> Unit {
  epoxy_glGenVertexArraysAPPLE(d_glGenVertexArraysAPPLE.get(), n, arrays)
}

///|
let d_glGenVertexArraysOES : Dispatch = Dispatch::with_aliases(
  "glGenVertexArraysOES",
  ["glGenVertexArrays", "glGenVertexArraysAPPLE"],
)

///|
#borrow(arrays)
extern "c" fn epoxy_glGenVertexArraysOES(
  fp : CPtr,
  n : Int,
  arrays : FixedArray[UInt],
) -> Unit = "epoxy_glGenVertexArraysOES"

///|
pub fn gl_gen_vertex_arrays_oes(n : Int, arrays : FixedArray[UInt]) -> Unit {
  epoxy_glGenVertexArraysOES(d_glGenVertexArraysOES.get(), n, arrays)
}

///|
let d_glGenVertexShadersEXT : Dispatch = Dispatch::new("glGenVertexShadersEXT")

///|
extern "c" fn epoxy_glGenVertexShadersEXT(fp : CPtr, range : UInt) -> UInt = "epoxy_glGenVertexShadersEXT"

///|
pub fn gl_gen_vertex_shaders_ext(range : UInt) -> UInt {
  epoxy_glGenVertexShadersEXT(d_glGenVertexShadersEXT.get(), range)
}

///|
let d_glGenerateMipmap : Dispatch = Dispatch::with_aliases("glGenerateMipmap", [
  "glGenerateMipmapEXT",
])

///|
extern "c" fn epoxy_glGenerateMipmap(fp : CPtr, target : UInt) -> Unit = "epoxy_glGenerateMipmap"

///|
pub fn gl_generate_mipmap(target : UInt) -> Unit {
  epoxy_glGenerateMipmap(d_glGenerateMipmap.get(), target)
}

///|
let d_glGenerateMipmapEXT : Dispatch = Dispatch::with_aliases(
  "glGenerateMipmapEXT",
  ["glGenerateMipmap"],
)

///|
extern "c" fn epoxy_glGenerateMipmapEXT(fp : CPtr, target : UInt) -> Unit = "epoxy_glGenerateMipmapEXT"

///|
pub fn gl_generate_mipmap_ext(target : UInt) -> Unit {
  epoxy_glGenerateMipmapEXT(d_glGenerateMipmapEXT.get(), target)
}

///|
let d_glGenerateMipmapOES : Dispatch = Dispatch::new("glGenerateMipmapOES")

///|
extern "c" fn epoxy_glGenerateMipmapOES(fp : CPtr, target : UInt) -> Unit = "epoxy_glGenerateMipmapOES"

///|
pub fn gl_generate_mipmap_oes(target : UInt) -> Unit {
  epoxy_glGenerateMipmapOES(d_glGenerateMipmapOES.get(), target)
}

///|
let d_glGenerateMultiTexMipmapEXT : Dispatch = Dispatch::new(
  "glGenerateMultiTexMipmapEXT",
)

///|
extern "c" fn epoxy_glGenerateMultiTexMipmapEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
) -> Unit = "epoxy_glGenerateMultiTexMipmapEXT"

///|
pub fn gl_generate_multi_tex_mipmap_ext(texunit : UInt, target : UInt) -> Unit {
  epoxy_glGenerateMultiTexMipmapEXT(
    d_glGenerateMultiTexMipmapEXT.get(),
    texunit,
    target,
  )
}

///|
let d_glGenerateTextureMipmap : Dispatch = Dispatch::new(
  "glGenerateTextureMipmap",
)

///|
extern "c" fn epoxy_glGenerateTextureMipmap(fp : CPtr, texture : UInt) -> Unit = "epoxy_glGenerateTextureMipmap"

///|
pub fn gl_generate_texture_mipmap(texture : UInt) -> Unit {
  epoxy_glGenerateTextureMipmap(d_glGenerateTextureMipmap.get(), texture)
}

///|
let d_glGenerateTextureMipmapEXT : Dispatch = Dispatch::new(
  "glGenerateTextureMipmapEXT",
)

///|
extern "c" fn epoxy_glGenerateTextureMipmapEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
) -> Unit = "epoxy_glGenerateTextureMipmapEXT"

///|
pub fn gl_generate_texture_mipmap_ext(texture : UInt, target : UInt) -> Unit {
  epoxy_glGenerateTextureMipmapEXT(
    d_glGenerateTextureMipmapEXT.get(),
    texture,
    target,
  )
}

///|
let d_glGetActiveAtomicCounterBufferiv : Dispatch = Dispatch::new(
  "glGetActiveAtomicCounterBufferiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetActiveAtomicCounterBufferiv(
  fp : CPtr,
  program : UInt,
  bufferIndex : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetActiveAtomicCounterBufferiv"

///|
pub fn gl_get_active_atomic_counter_bufferiv(
  program : UInt,
  bufferIndex : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetActiveAtomicCounterBufferiv(
    d_glGetActiveAtomicCounterBufferiv.get(),
    program,
    bufferIndex,
    pname,
    params,
  )
}

///|
let d_glGetActiveAttrib : Dispatch = Dispatch::with_aliases(
  "glGetActiveAttrib",
  ["glGetActiveAttribARB"],
)

///|
#borrow(length, size, type_, name)
extern "c" fn epoxy_glGetActiveAttrib(
  fp : CPtr,
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit = "epoxy_glGetActiveAttrib"

///|
pub fn gl_get_active_attrib(
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit {
  epoxy_glGetActiveAttrib(
    d_glGetActiveAttrib.get(),
    program,
    index,
    bufSize,
    length,
    size,
    type_,
    name,
  )
}

///|
let d_glGetActiveSubroutineName : Dispatch = Dispatch::new(
  "glGetActiveSubroutineName",
)

///|
#borrow(length, name)
extern "c" fn epoxy_glGetActiveSubroutineName(
  fp : CPtr,
  program : UInt,
  shadertype : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  name : Bytes,
) -> Unit = "epoxy_glGetActiveSubroutineName"

///|
pub fn gl_get_active_subroutine_name(
  program : UInt,
  shadertype : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  name : Bytes,
) -> Unit {
  epoxy_glGetActiveSubroutineName(
    d_glGetActiveSubroutineName.get(),
    program,
    shadertype,
    index,
    bufSize,
    length,
    name,
  )
}

///|
let d_glGetActiveSubroutineUniformName : Dispatch = Dispatch::new(
  "glGetActiveSubroutineUniformName",
)

///|
#borrow(length, name)
extern "c" fn epoxy_glGetActiveSubroutineUniformName(
  fp : CPtr,
  program : UInt,
  shadertype : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  name : Bytes,
) -> Unit = "epoxy_glGetActiveSubroutineUniformName"

///|
pub fn gl_get_active_subroutine_uniform_name(
  program : UInt,
  shadertype : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  name : Bytes,
) -> Unit {
  epoxy_glGetActiveSubroutineUniformName(
    d_glGetActiveSubroutineUniformName.get(),
    program,
    shadertype,
    index,
    bufSize,
    length,
    name,
  )
}

///|
let d_glGetActiveSubroutineUniformiv : Dispatch = Dispatch::new(
  "glGetActiveSubroutineUniformiv",
)

///|
#borrow(values)
extern "c" fn epoxy_glGetActiveSubroutineUniformiv(
  fp : CPtr,
  program : UInt,
  shadertype : UInt,
  index : UInt,
  pname : UInt,
  values : FixedArray[Int],
) -> Unit = "epoxy_glGetActiveSubroutineUniformiv"

///|
pub fn gl_get_active_subroutine_uniformiv(
  program : UInt,
  shadertype : UInt,
  index : UInt,
  pname : UInt,
  values : FixedArray[Int],
) -> Unit {
  epoxy_glGetActiveSubroutineUniformiv(
    d_glGetActiveSubroutineUniformiv.get(),
    program,
    shadertype,
    index,
    pname,
    values,
  )
}

///|
let d_glGetActiveUniform : Dispatch = Dispatch::with_aliases(
  "glGetActiveUniform",
  ["glGetActiveUniformARB"],
)

///|
#borrow(length, size, type_, name)
extern "c" fn epoxy_glGetActiveUniform(
  fp : CPtr,
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit = "epoxy_glGetActiveUniform"

///|
pub fn gl_get_active_uniform(
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit {
  epoxy_glGetActiveUniform(
    d_glGetActiveUniform.get(),
    program,
    index,
    bufSize,
    length,
    size,
    type_,
    name,
  )
}

///|
let d_glGetActiveUniformBlockName : Dispatch = Dispatch::new(
  "glGetActiveUniformBlockName",
)

///|
#borrow(length, uniformBlockName)
extern "c" fn epoxy_glGetActiveUniformBlockName(
  fp : CPtr,
  program : UInt,
  uniformBlockIndex : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  uniformBlockName : Bytes,
) -> Unit = "epoxy_glGetActiveUniformBlockName"

///|
pub fn gl_get_active_uniform_block_name(
  program : UInt,
  uniformBlockIndex : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  uniformBlockName : Bytes,
) -> Unit {
  epoxy_glGetActiveUniformBlockName(
    d_glGetActiveUniformBlockName.get(),
    program,
    uniformBlockIndex,
    bufSize,
    length,
    uniformBlockName,
  )
}

///|
let d_glGetActiveUniformBlockiv : Dispatch = Dispatch::new(
  "glGetActiveUniformBlockiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetActiveUniformBlockiv(
  fp : CPtr,
  program : UInt,
  uniformBlockIndex : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetActiveUniformBlockiv"

///|
pub fn gl_get_active_uniform_blockiv(
  program : UInt,
  uniformBlockIndex : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetActiveUniformBlockiv(
    d_glGetActiveUniformBlockiv.get(),
    program,
    uniformBlockIndex,
    pname,
    params,
  )
}

///|
let d_glGetActiveUniformName : Dispatch = Dispatch::new(
  "glGetActiveUniformName",
)

///|
#borrow(length, uniformName)
extern "c" fn epoxy_glGetActiveUniformName(
  fp : CPtr,
  program : UInt,
  uniformIndex : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  uniformName : Bytes,
) -> Unit = "epoxy_glGetActiveUniformName"

///|
pub fn gl_get_active_uniform_name(
  program : UInt,
  uniformIndex : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  uniformName : Bytes,
) -> Unit {
  epoxy_glGetActiveUniformName(
    d_glGetActiveUniformName.get(),
    program,
    uniformIndex,
    bufSize,
    length,
    uniformName,
  )
}

///|
let d_glGetActiveUniformsiv : Dispatch = Dispatch::new("glGetActiveUniformsiv")

///|
#borrow(uniformIndices, params)
extern "c" fn epoxy_glGetActiveUniformsiv(
  fp : CPtr,
  program : UInt,
  uniformCount : Int,
  uniformIndices : FixedArray[UInt],
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetActiveUniformsiv"

///|
pub fn gl_get_active_uniformsiv(
  program : UInt,
  uniformCount : Int,
  uniformIndices : FixedArray[UInt],
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetActiveUniformsiv(
    d_glGetActiveUniformsiv.get(),
    program,
    uniformCount,
    uniformIndices,
    pname,
    params,
  )
}

///|
let d_glGetActiveVaryingNV : Dispatch = Dispatch::new("glGetActiveVaryingNV")

///|
#borrow(length, size, type_, name)
extern "c" fn epoxy_glGetActiveVaryingNV(
  fp : CPtr,
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit = "epoxy_glGetActiveVaryingNV"

///|
pub fn gl_get_active_varying_nv(
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit {
  epoxy_glGetActiveVaryingNV(
    d_glGetActiveVaryingNV.get(),
    program,
    index,
    bufSize,
    length,
    size,
    type_,
    name,
  )
}

///|
let d_glGetArrayObjectfvATI : Dispatch = Dispatch::new("glGetArrayObjectfvATI")

///|
#borrow(params)
extern "c" fn epoxy_glGetArrayObjectfvATI(
  fp : CPtr,
  array : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetArrayObjectfvATI"

///|
pub fn gl_get_array_objectfv_ati(
  array : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetArrayObjectfvATI(
    d_glGetArrayObjectfvATI.get(),
    array,
    pname,
    params,
  )
}

///|
let d_glGetArrayObjectivATI : Dispatch = Dispatch::new("glGetArrayObjectivATI")

///|
#borrow(params)
extern "c" fn epoxy_glGetArrayObjectivATI(
  fp : CPtr,
  array : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetArrayObjectivATI"

///|
pub fn gl_get_array_objectiv_ati(
  array : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetArrayObjectivATI(
    d_glGetArrayObjectivATI.get(),
    array,
    pname,
    params,
  )
}

///|
let d_glGetAttachedShaders : Dispatch = Dispatch::new("glGetAttachedShaders")

///|
#borrow(count, shaders)
extern "c" fn epoxy_glGetAttachedShaders(
  fp : CPtr,
  program : UInt,
  maxCount : Int,
  count : FixedArray[Int],
  shaders : FixedArray[UInt],
) -> Unit = "epoxy_glGetAttachedShaders"

///|
pub fn gl_get_attached_shaders(
  program : UInt,
  maxCount : Int,
  count : FixedArray[Int],
  shaders : FixedArray[UInt],
) -> Unit {
  epoxy_glGetAttachedShaders(
    d_glGetAttachedShaders.get(),
    program,
    maxCount,
    count,
    shaders,
  )
}

///|
let d_glGetAttribLocation : Dispatch = Dispatch::with_aliases(
  "glGetAttribLocation",
  ["glGetAttribLocationARB"],
)

///|
#borrow(name)
extern "c" fn epoxy_glGetAttribLocation(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetAttribLocation"

///|
pub fn gl_get_attrib_location(program : UInt, name : Bytes) -> Int {
  epoxy_glGetAttribLocation(d_glGetAttribLocation.get(), program, name)
}

///|
let d_glGetBooleanIndexedvEXT : Dispatch = Dispatch::with_aliases(
  "glGetBooleanIndexedvEXT",
  ["glGetBooleani_v"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetBooleanIndexedvEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetBooleanIndexedvEXT"

///|
pub fn gl_get_boolean_indexedv_ext(
  target : UInt,
  index : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glGetBooleanIndexedvEXT(
    d_glGetBooleanIndexedvEXT.get(),
    target,
    index,
    data,
  )
}

///|
let d_glGetBooleani_v : Dispatch = Dispatch::with_aliases("glGetBooleani_v", [
  "glGetBooleanIndexedvEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glGetBooleani_v(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetBooleani_v"

///|
pub fn gl_get_booleani_v(target : UInt, index : UInt, data : Bytes) -> Unit {
  epoxy_glGetBooleani_v(d_glGetBooleani_v.get(), target, index, data)
}

///|
let d_glGetBooleanv : Dispatch = Dispatch::new("glGetBooleanv")

///|
#borrow(data)
extern "c" fn epoxy_glGetBooleanv(
  fp : CPtr,
  pname : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetBooleanv"

///|
pub fn gl_get_booleanv(pname : UInt, data : Bytes) -> Unit {
  epoxy_glGetBooleanv(d_glGetBooleanv.get(), pname, data)
}

///|
let d_glGetBufferParameteri64v : Dispatch = Dispatch::new(
  "glGetBufferParameteri64v",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetBufferParameteri64v(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetBufferParameteri64v"

///|
pub fn gl_get_buffer_parameteri64v(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetBufferParameteri64v(
    d_glGetBufferParameteri64v.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetBufferParameteriv : Dispatch = Dispatch::with_aliases(
  "glGetBufferParameteriv",
  ["glGetBufferParameterivARB"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetBufferParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetBufferParameteriv"

///|
pub fn gl_get_buffer_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetBufferParameteriv(
    d_glGetBufferParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetBufferParameterivARB : Dispatch = Dispatch::with_aliases(
  "glGetBufferParameterivARB",
  ["glGetBufferParameteriv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetBufferParameterivARB(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetBufferParameterivARB"

///|
pub fn gl_get_buffer_parameteriv_arb(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetBufferParameterivARB(
    d_glGetBufferParameterivARB.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetBufferParameterui64vNV : Dispatch = Dispatch::new(
  "glGetBufferParameterui64vNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetBufferParameterui64vNV(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetBufferParameterui64vNV"

///|
pub fn gl_get_buffer_parameterui64v_nv(
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetBufferParameterui64vNV(
    d_glGetBufferParameterui64vNV.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetBufferSubData : Dispatch = Dispatch::with_aliases(
  "glGetBufferSubData",
  ["glGetBufferSubDataARB"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetBufferSubData(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glGetBufferSubData"

///|
pub fn gl_get_buffer_sub_data(
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glGetBufferSubData(
    d_glGetBufferSubData.get(),
    target,
    offset,
    size,
    data,
  )
}

///|
let d_glGetBufferSubDataARB : Dispatch = Dispatch::with_aliases(
  "glGetBufferSubDataARB",
  ["glGetBufferSubData"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetBufferSubDataARB(
  fp : CPtr,
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glGetBufferSubDataARB"

///|
pub fn gl_get_buffer_sub_data_arb(
  target : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glGetBufferSubDataARB(
    d_glGetBufferSubDataARB.get(),
    target,
    offset,
    size,
    data,
  )
}

///|
let d_glGetClipPlane : Dispatch = Dispatch::new("glGetClipPlane")

///|
#borrow(equation)
extern "c" fn epoxy_glGetClipPlane(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Double],
) -> Unit = "epoxy_glGetClipPlane"

///|
pub fn gl_get_clip_plane(plane : UInt, equation : FixedArray[Double]) -> Unit {
  epoxy_glGetClipPlane(d_glGetClipPlane.get(), plane, equation)
}

///|
let d_glGetClipPlanef : Dispatch = Dispatch::new("glGetClipPlanef")

///|
#borrow(equation)
extern "c" fn epoxy_glGetClipPlanef(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Float],
) -> Unit = "epoxy_glGetClipPlanef"

///|
pub fn gl_get_clip_planef(plane : UInt, equation : FixedArray[Float]) -> Unit {
  epoxy_glGetClipPlanef(d_glGetClipPlanef.get(), plane, equation)
}

///|
let d_glGetClipPlanefOES : Dispatch = Dispatch::new("glGetClipPlanefOES")

///|
#borrow(equation)
extern "c" fn epoxy_glGetClipPlanefOES(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Float],
) -> Unit = "epoxy_glGetClipPlanefOES"

///|
pub fn gl_get_clip_planef_oes(
  plane : UInt,
  equation : FixedArray[Float],
) -> Unit {
  epoxy_glGetClipPlanefOES(d_glGetClipPlanefOES.get(), plane, equation)
}

///|
let d_glGetClipPlanex : Dispatch = Dispatch::new("glGetClipPlanex")

///|
#borrow(equation)
extern "c" fn epoxy_glGetClipPlanex(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Int],
) -> Unit = "epoxy_glGetClipPlanex"

///|
pub fn gl_get_clip_planex(plane : UInt, equation : FixedArray[Int]) -> Unit {
  epoxy_glGetClipPlanex(d_glGetClipPlanex.get(), plane, equation)
}

///|
let d_glGetClipPlanexOES : Dispatch = Dispatch::new("glGetClipPlanexOES")

///|
#borrow(equation)
extern "c" fn epoxy_glGetClipPlanexOES(
  fp : CPtr,
  plane : UInt,
  equation : FixedArray[Int],
) -> Unit = "epoxy_glGetClipPlanexOES"

///|
pub fn gl_get_clip_planex_oes(plane : UInt, equation : FixedArray[Int]) -> Unit {
  epoxy_glGetClipPlanexOES(d_glGetClipPlanexOES.get(), plane, equation)
}

///|
let d_glGetColorTable : Dispatch = Dispatch::with_aliases("glGetColorTable", [
  "glGetColorTableEXT",
])

///|
#borrow(table)
extern "c" fn epoxy_glGetColorTable(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit = "epoxy_glGetColorTable"

///|
pub fn gl_get_color_table(
  target : UInt,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit {
  epoxy_glGetColorTable(d_glGetColorTable.get(), target, format, type_, table)
}

///|
let d_glGetColorTableEXT : Dispatch = Dispatch::with_aliases(
  "glGetColorTableEXT",
  ["glGetColorTable"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetColorTableEXT(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetColorTableEXT"

///|
pub fn gl_get_color_table_ext(
  target : UInt,
  format : UInt,
  type_ : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glGetColorTableEXT(
    d_glGetColorTableEXT.get(),
    target,
    format,
    type_,
    data,
  )
}

///|
let d_glGetColorTableParameterfv : Dispatch = Dispatch::with_aliases(
  "glGetColorTableParameterfv",
  ["glGetColorTableParameterfvEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetColorTableParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetColorTableParameterfv"

///|
pub fn gl_get_color_table_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetColorTableParameterfv(
    d_glGetColorTableParameterfv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetColorTableParameterfvEXT : Dispatch = Dispatch::with_aliases(
  "glGetColorTableParameterfvEXT",
  ["glGetColorTableParameterfv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetColorTableParameterfvEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetColorTableParameterfvEXT"

///|
pub fn gl_get_color_table_parameterfv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetColorTableParameterfvEXT(
    d_glGetColorTableParameterfvEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetColorTableParameterfvSGI : Dispatch = Dispatch::new(
  "glGetColorTableParameterfvSGI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetColorTableParameterfvSGI(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetColorTableParameterfvSGI"

///|
pub fn gl_get_color_table_parameterfv_sgi(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetColorTableParameterfvSGI(
    d_glGetColorTableParameterfvSGI.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetColorTableParameteriv : Dispatch = Dispatch::with_aliases(
  "glGetColorTableParameteriv",
  ["glGetColorTableParameterivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetColorTableParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetColorTableParameteriv"

///|
pub fn gl_get_color_table_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetColorTableParameteriv(
    d_glGetColorTableParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetColorTableParameterivEXT : Dispatch = Dispatch::with_aliases(
  "glGetColorTableParameterivEXT",
  ["glGetColorTableParameteriv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetColorTableParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetColorTableParameterivEXT"

///|
pub fn gl_get_color_table_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetColorTableParameterivEXT(
    d_glGetColorTableParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetColorTableParameterivSGI : Dispatch = Dispatch::new(
  "glGetColorTableParameterivSGI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetColorTableParameterivSGI(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetColorTableParameterivSGI"

///|
pub fn gl_get_color_table_parameteriv_sgi(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetColorTableParameterivSGI(
    d_glGetColorTableParameterivSGI.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetColorTableSGI : Dispatch = Dispatch::new("glGetColorTableSGI")

///|
#borrow(table)
extern "c" fn epoxy_glGetColorTableSGI(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit = "epoxy_glGetColorTableSGI"

///|
pub fn gl_get_color_table_sgi(
  target : UInt,
  format : UInt,
  type_ : UInt,
  table : Bytes,
) -> Unit {
  epoxy_glGetColorTableSGI(
    d_glGetColorTableSGI.get(),
    target,
    format,
    type_,
    table,
  )
}

///|
let d_glGetCombinerInputParameterfvNV : Dispatch = Dispatch::new(
  "glGetCombinerInputParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetCombinerInputParameterfvNV(
  fp : CPtr,
  stage : UInt,
  portion : UInt,
  variable : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetCombinerInputParameterfvNV"

///|
pub fn gl_get_combiner_input_parameterfv_nv(
  stage : UInt,
  portion : UInt,
  variable : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetCombinerInputParameterfvNV(
    d_glGetCombinerInputParameterfvNV.get(),
    stage,
    portion,
    variable,
    pname,
    params,
  )
}

///|
let d_glGetCombinerInputParameterivNV : Dispatch = Dispatch::new(
  "glGetCombinerInputParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetCombinerInputParameterivNV(
  fp : CPtr,
  stage : UInt,
  portion : UInt,
  variable : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetCombinerInputParameterivNV"

///|
pub fn gl_get_combiner_input_parameteriv_nv(
  stage : UInt,
  portion : UInt,
  variable : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetCombinerInputParameterivNV(
    d_glGetCombinerInputParameterivNV.get(),
    stage,
    portion,
    variable,
    pname,
    params,
  )
}

///|
let d_glGetCombinerOutputParameterfvNV : Dispatch = Dispatch::new(
  "glGetCombinerOutputParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetCombinerOutputParameterfvNV(
  fp : CPtr,
  stage : UInt,
  portion : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetCombinerOutputParameterfvNV"

///|
pub fn gl_get_combiner_output_parameterfv_nv(
  stage : UInt,
  portion : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetCombinerOutputParameterfvNV(
    d_glGetCombinerOutputParameterfvNV.get(),
    stage,
    portion,
    pname,
    params,
  )
}

///|
let d_glGetCombinerOutputParameterivNV : Dispatch = Dispatch::new(
  "glGetCombinerOutputParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetCombinerOutputParameterivNV(
  fp : CPtr,
  stage : UInt,
  portion : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetCombinerOutputParameterivNV"

///|
pub fn gl_get_combiner_output_parameteriv_nv(
  stage : UInt,
  portion : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetCombinerOutputParameterivNV(
    d_glGetCombinerOutputParameterivNV.get(),
    stage,
    portion,
    pname,
    params,
  )
}

///|
let d_glGetCombinerStageParameterfvNV : Dispatch = Dispatch::new(
  "glGetCombinerStageParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetCombinerStageParameterfvNV(
  fp : CPtr,
  stage : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetCombinerStageParameterfvNV"

///|
pub fn gl_get_combiner_stage_parameterfv_nv(
  stage : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetCombinerStageParameterfvNV(
    d_glGetCombinerStageParameterfvNV.get(),
    stage,
    pname,
    params,
  )
}

///|
let d_glGetCommandHeaderNV : Dispatch = Dispatch::new("glGetCommandHeaderNV")

///|
extern "c" fn epoxy_glGetCommandHeaderNV(
  fp : CPtr,
  tokenID : UInt,
  size : UInt,
) -> UInt = "epoxy_glGetCommandHeaderNV"

///|
pub fn gl_get_command_header_nv(tokenID : UInt, size : UInt) -> UInt {
  epoxy_glGetCommandHeaderNV(d_glGetCommandHeaderNV.get(), tokenID, size)
}

///|
let d_glGetCompressedMultiTexImageEXT : Dispatch = Dispatch::new(
  "glGetCompressedMultiTexImageEXT",
)

///|
#borrow(img)
extern "c" fn epoxy_glGetCompressedMultiTexImageEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  lod : Int,
  img : Bytes,
) -> Unit = "epoxy_glGetCompressedMultiTexImageEXT"

///|
pub fn gl_get_compressed_multi_tex_image_ext(
  texunit : UInt,
  target : UInt,
  lod : Int,
  img : Bytes,
) -> Unit {
  epoxy_glGetCompressedMultiTexImageEXT(
    d_glGetCompressedMultiTexImageEXT.get(),
    texunit,
    target,
    lod,
    img,
  )
}

///|
let d_glGetCompressedTexImage : Dispatch = Dispatch::with_aliases(
  "glGetCompressedTexImage",
  ["glGetCompressedTexImageARB"],
)

///|
#borrow(img)
extern "c" fn epoxy_glGetCompressedTexImage(
  fp : CPtr,
  target : UInt,
  level : Int,
  img : Bytes,
) -> Unit = "epoxy_glGetCompressedTexImage"

///|
pub fn gl_get_compressed_tex_image(
  target : UInt,
  level : Int,
  img : Bytes,
) -> Unit {
  epoxy_glGetCompressedTexImage(
    d_glGetCompressedTexImage.get(),
    target,
    level,
    img,
  )
}

///|
let d_glGetCompressedTexImageARB : Dispatch = Dispatch::with_aliases(
  "glGetCompressedTexImageARB",
  ["glGetCompressedTexImage"],
)

///|
#borrow(img)
extern "c" fn epoxy_glGetCompressedTexImageARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  img : Bytes,
) -> Unit = "epoxy_glGetCompressedTexImageARB"

///|
pub fn gl_get_compressed_tex_image_arb(
  target : UInt,
  level : Int,
  img : Bytes,
) -> Unit {
  epoxy_glGetCompressedTexImageARB(
    d_glGetCompressedTexImageARB.get(),
    target,
    level,
    img,
  )
}

///|
let d_glGetCompressedTextureImage : Dispatch = Dispatch::new(
  "glGetCompressedTextureImage",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glGetCompressedTextureImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
  bufSize : Int,
  pixels : Bytes,
) -> Unit = "epoxy_glGetCompressedTextureImage"

///|
pub fn gl_get_compressed_texture_image(
  texture : UInt,
  level : Int,
  bufSize : Int,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetCompressedTextureImage(
    d_glGetCompressedTextureImage.get(),
    texture,
    level,
    bufSize,
    pixels,
  )
}

///|
let d_glGetCompressedTextureImageEXT : Dispatch = Dispatch::new(
  "glGetCompressedTextureImageEXT",
)

///|
#borrow(img)
extern "c" fn epoxy_glGetCompressedTextureImageEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  lod : Int,
  img : Bytes,
) -> Unit = "epoxy_glGetCompressedTextureImageEXT"

///|
pub fn gl_get_compressed_texture_image_ext(
  texture : UInt,
  target : UInt,
  lod : Int,
  img : Bytes,
) -> Unit {
  epoxy_glGetCompressedTextureImageEXT(
    d_glGetCompressedTextureImageEXT.get(),
    texture,
    target,
    lod,
    img,
  )
}

///|
let d_glGetCompressedTextureSubImage : Dispatch = Dispatch::new(
  "glGetCompressedTextureSubImage",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glGetCompressedTextureSubImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  bufSize : Int,
  pixels : Bytes,
) -> Unit = "epoxy_glGetCompressedTextureSubImage"

///|
pub fn gl_get_compressed_texture_sub_image(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  bufSize : Int,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetCompressedTextureSubImage(
    d_glGetCompressedTextureSubImage.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    bufSize,
    pixels,
  )
}

///|
let d_glGetConvolutionFilter : Dispatch = Dispatch::new(
  "glGetConvolutionFilter",
)

///|
#borrow(image)
extern "c" fn epoxy_glGetConvolutionFilter(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit = "epoxy_glGetConvolutionFilter"

///|
pub fn gl_get_convolution_filter(
  target : UInt,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit {
  epoxy_glGetConvolutionFilter(
    d_glGetConvolutionFilter.get(),
    target,
    format,
    type_,
    image,
  )
}

///|
let d_glGetConvolutionFilterEXT : Dispatch = Dispatch::new(
  "glGetConvolutionFilterEXT",
)

///|
#borrow(image)
extern "c" fn epoxy_glGetConvolutionFilterEXT(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit = "epoxy_glGetConvolutionFilterEXT"

///|
pub fn gl_get_convolution_filter_ext(
  target : UInt,
  format : UInt,
  type_ : UInt,
  image : Bytes,
) -> Unit {
  epoxy_glGetConvolutionFilterEXT(
    d_glGetConvolutionFilterEXT.get(),
    target,
    format,
    type_,
    image,
  )
}

///|
let d_glGetConvolutionParameterfv : Dispatch = Dispatch::new(
  "glGetConvolutionParameterfv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetConvolutionParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetConvolutionParameterfv"

///|
pub fn gl_get_convolution_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetConvolutionParameterfv(
    d_glGetConvolutionParameterfv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetConvolutionParameterfvEXT : Dispatch = Dispatch::new(
  "glGetConvolutionParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetConvolutionParameterfvEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetConvolutionParameterfvEXT"

///|
pub fn gl_get_convolution_parameterfv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetConvolutionParameterfvEXT(
    d_glGetConvolutionParameterfvEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetConvolutionParameteriv : Dispatch = Dispatch::new(
  "glGetConvolutionParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetConvolutionParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetConvolutionParameteriv"

///|
pub fn gl_get_convolution_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetConvolutionParameteriv(
    d_glGetConvolutionParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetConvolutionParameterivEXT : Dispatch = Dispatch::new(
  "glGetConvolutionParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetConvolutionParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetConvolutionParameterivEXT"

///|
pub fn gl_get_convolution_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetConvolutionParameterivEXT(
    d_glGetConvolutionParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetConvolutionParameterxvOES : Dispatch = Dispatch::new(
  "glGetConvolutionParameterxvOES",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetConvolutionParameterxvOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetConvolutionParameterxvOES"

///|
pub fn gl_get_convolution_parameterxv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetConvolutionParameterxvOES(
    d_glGetConvolutionParameterxvOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetCoverageModulationTableNV : Dispatch = Dispatch::new(
  "glGetCoverageModulationTableNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glGetCoverageModulationTableNV(
  fp : CPtr,
  bufSize : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glGetCoverageModulationTableNV"

///|
pub fn gl_get_coverage_modulation_table_nv(
  bufSize : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glGetCoverageModulationTableNV(
    d_glGetCoverageModulationTableNV.get(),
    bufSize,
    v,
  )
}

///|
let d_glGetDebugMessageLog : Dispatch = Dispatch::with_aliases(
  "glGetDebugMessageLog",
  ["glGetDebugMessageLogARB", "glGetDebugMessageLogKHR"],
)

///|
#borrow(sources, types, ids, severities, lengths, messageLog)
extern "c" fn epoxy_glGetDebugMessageLog(
  fp : CPtr,
  count : UInt,
  bufSize : Int,
  sources : FixedArray[UInt],
  types : FixedArray[UInt],
  ids : FixedArray[UInt],
  severities : FixedArray[UInt],
  lengths : FixedArray[Int],
  messageLog : Bytes,
) -> UInt = "epoxy_glGetDebugMessageLog"

///|
pub fn gl_get_debug_message_log(
  count : UInt,
  bufSize : Int,
  sources : FixedArray[UInt],
  types : FixedArray[UInt],
  ids : FixedArray[UInt],
  severities : FixedArray[UInt],
  lengths : FixedArray[Int],
  messageLog : Bytes,
) -> UInt {
  epoxy_glGetDebugMessageLog(
    d_glGetDebugMessageLog.get(),
    count,
    bufSize,
    sources,
    types,
    ids,
    severities,
    lengths,
    messageLog,
  )
}

///|
let d_glGetDebugMessageLogAMD : Dispatch = Dispatch::new(
  "glGetDebugMessageLogAMD",
)

///|
#borrow(categories, severities, ids, lengths, message)
extern "c" fn epoxy_glGetDebugMessageLogAMD(
  fp : CPtr,
  count : UInt,
  bufSize : Int,
  categories : FixedArray[UInt],
  severities : FixedArray[UInt],
  ids : FixedArray[UInt],
  lengths : FixedArray[Int],
  message : Bytes,
) -> UInt = "epoxy_glGetDebugMessageLogAMD"

///|
pub fn gl_get_debug_message_log_amd(
  count : UInt,
  bufSize : Int,
  categories : FixedArray[UInt],
  severities : FixedArray[UInt],
  ids : FixedArray[UInt],
  lengths : FixedArray[Int],
  message : Bytes,
) -> UInt {
  epoxy_glGetDebugMessageLogAMD(
    d_glGetDebugMessageLogAMD.get(),
    count,
    bufSize,
    categories,
    severities,
    ids,
    lengths,
    message,
  )
}

///|
let d_glGetDebugMessageLogARB : Dispatch = Dispatch::with_aliases(
  "glGetDebugMessageLogARB",
  ["glGetDebugMessageLog", "glGetDebugMessageLogKHR"],
)

///|
#borrow(sources, types, ids, severities, lengths, messageLog)
extern "c" fn epoxy_glGetDebugMessageLogARB(
  fp : CPtr,
  count : UInt,
  bufSize : Int,
  sources : FixedArray[UInt],
  types : FixedArray[UInt],
  ids : FixedArray[UInt],
  severities : FixedArray[UInt],
  lengths : FixedArray[Int],
  messageLog : Bytes,
) -> UInt = "epoxy_glGetDebugMessageLogARB"

///|
pub fn gl_get_debug_message_log_arb(
  count : UInt,
  bufSize : Int,
  sources : FixedArray[UInt],
  types : FixedArray[UInt],
  ids : FixedArray[UInt],
  severities : FixedArray[UInt],
  lengths : FixedArray[Int],
  messageLog : Bytes,
) -> UInt {
  epoxy_glGetDebugMessageLogARB(
    d_glGetDebugMessageLogARB.get(),
    count,
    bufSize,
    sources,
    types,
    ids,
    severities,
    lengths,
    messageLog,
  )
}

///|
let d_glGetDebugMessageLogKHR : Dispatch = Dispatch::with_aliases(
  "glGetDebugMessageLogKHR",
  ["glGetDebugMessageLog", "glGetDebugMessageLogARB"],
)

///|
#borrow(sources, types, ids, severities, lengths, messageLog)
extern "c" fn epoxy_glGetDebugMessageLogKHR(
  fp : CPtr,
  count : UInt,
  bufSize : Int,
  sources : FixedArray[UInt],
  types : FixedArray[UInt],
  ids : FixedArray[UInt],
  severities : FixedArray[UInt],
  lengths : FixedArray[Int],
  messageLog : Bytes,
) -> UInt = "epoxy_glGetDebugMessageLogKHR"

///|
pub fn gl_get_debug_message_log_khr(
  count : UInt,
  bufSize : Int,
  sources : FixedArray[UInt],
  types : FixedArray[UInt],
  ids : FixedArray[UInt],
  severities : FixedArray[UInt],
  lengths : FixedArray[Int],
  messageLog : Bytes,
) -> UInt {
  epoxy_glGetDebugMessageLogKHR(
    d_glGetDebugMessageLogKHR.get(),
    count,
    bufSize,
    sources,
    types,
    ids,
    severities,
    lengths,
    messageLog,
  )
}

///|
let d_glGetDetailTexFuncSGIS : Dispatch = Dispatch::new(
  "glGetDetailTexFuncSGIS",
)

///|
#borrow(points)
extern "c" fn epoxy_glGetDetailTexFuncSGIS(
  fp : CPtr,
  target : UInt,
  points : FixedArray[Float],
) -> Unit = "epoxy_glGetDetailTexFuncSGIS"

///|
pub fn gl_get_detail_tex_func_sgis(
  target : UInt,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glGetDetailTexFuncSGIS(d_glGetDetailTexFuncSGIS.get(), target, points)
}

///|
let d_glGetDoubleIndexedvEXT : Dispatch = Dispatch::with_aliases(
  "glGetDoubleIndexedvEXT",
  ["glGetDoublei_v", "glGetDoublei_vEXT"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetDoubleIndexedvEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Double],
) -> Unit = "epoxy_glGetDoubleIndexedvEXT"

///|
pub fn gl_get_double_indexedv_ext(
  target : UInt,
  index : UInt,
  data : FixedArray[Double],
) -> Unit {
  epoxy_glGetDoubleIndexedvEXT(
    d_glGetDoubleIndexedvEXT.get(),
    target,
    index,
    data,
  )
}

///|
let d_glGetDoublei_v : Dispatch = Dispatch::with_aliases("glGetDoublei_v", [
  "glGetDoubleIndexedvEXT", "glGetDoublei_vEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glGetDoublei_v(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Double],
) -> Unit = "epoxy_glGetDoublei_v"

///|
pub fn gl_get_doublei_v(
  target : UInt,
  index : UInt,
  data : FixedArray[Double],
) -> Unit {
  epoxy_glGetDoublei_v(d_glGetDoublei_v.get(), target, index, data)
}

///|
let d_glGetDoublei_vEXT : Dispatch = Dispatch::with_aliases(
  "glGetDoublei_vEXT",
  ["glGetDoubleIndexedvEXT", "glGetDoublei_v"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetDoublei_vEXT(
  fp : CPtr,
  pname : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetDoublei_vEXT"

///|
pub fn gl_get_doublei_v_ext(
  pname : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetDoublei_vEXT(d_glGetDoublei_vEXT.get(), pname, index, params)
}

///|
let d_glGetDoublev : Dispatch = Dispatch::new("glGetDoublev")

///|
#borrow(data)
extern "c" fn epoxy_glGetDoublev(
  fp : CPtr,
  pname : UInt,
  data : FixedArray[Double],
) -> Unit = "epoxy_glGetDoublev"

///|
pub fn gl_get_doublev(pname : UInt, data : FixedArray[Double]) -> Unit {
  epoxy_glGetDoublev(d_glGetDoublev.get(), pname, data)
}

///|
let d_glGetDriverControlStringQCOM : Dispatch = Dispatch::new(
  "glGetDriverControlStringQCOM",
)

///|
#borrow(length, driverControlString)
extern "c" fn epoxy_glGetDriverControlStringQCOM(
  fp : CPtr,
  driverControl : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  driverControlString : Bytes,
) -> Unit = "epoxy_glGetDriverControlStringQCOM"

///|
pub fn gl_get_driver_control_string_qcom(
  driverControl : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  driverControlString : Bytes,
) -> Unit {
  epoxy_glGetDriverControlStringQCOM(
    d_glGetDriverControlStringQCOM.get(),
    driverControl,
    bufSize,
    length,
    driverControlString,
  )
}

///|
let d_glGetDriverControlsQCOM : Dispatch = Dispatch::new(
  "glGetDriverControlsQCOM",
)

///|
#borrow(num, driverControls)
extern "c" fn epoxy_glGetDriverControlsQCOM(
  fp : CPtr,
  num : FixedArray[Int],
  size : Int,
  driverControls : FixedArray[UInt],
) -> Unit = "epoxy_glGetDriverControlsQCOM"

///|
pub fn gl_get_driver_controls_qcom(
  num : FixedArray[Int],
  size : Int,
  driverControls : FixedArray[UInt],
) -> Unit {
  epoxy_glGetDriverControlsQCOM(
    d_glGetDriverControlsQCOM.get(),
    num,
    size,
    driverControls,
  )
}

///|
let d_glGetError : Dispatch = Dispatch::new("glGetError")

///|
extern "c" fn epoxy_glGetError(fp : CPtr) -> UInt = "epoxy_glGetError"

///|
pub fn gl_get_error() -> UInt {
  epoxy_glGetError(d_glGetError.get())
}

///|
let d_glGetFenceivNV : Dispatch = Dispatch::new("glGetFenceivNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetFenceivNV(
  fp : CPtr,
  fence : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFenceivNV"

///|
pub fn gl_get_fenceiv_nv(
  fence : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFenceivNV(d_glGetFenceivNV.get(), fence, pname, params)
}

///|
let d_glGetFinalCombinerInputParameterfvNV : Dispatch = Dispatch::new(
  "glGetFinalCombinerInputParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFinalCombinerInputParameterfvNV(
  fp : CPtr,
  variable : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetFinalCombinerInputParameterfvNV"

///|
pub fn gl_get_final_combiner_input_parameterfv_nv(
  variable : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetFinalCombinerInputParameterfvNV(
    d_glGetFinalCombinerInputParameterfvNV.get(),
    variable,
    pname,
    params,
  )
}

///|
let d_glGetFinalCombinerInputParameterivNV : Dispatch = Dispatch::new(
  "glGetFinalCombinerInputParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFinalCombinerInputParameterivNV(
  fp : CPtr,
  variable : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFinalCombinerInputParameterivNV"

///|
pub fn gl_get_final_combiner_input_parameteriv_nv(
  variable : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFinalCombinerInputParameterivNV(
    d_glGetFinalCombinerInputParameterivNV.get(),
    variable,
    pname,
    params,
  )
}

///|
let d_glGetFirstPerfQueryIdINTEL : Dispatch = Dispatch::new(
  "glGetFirstPerfQueryIdINTEL",
)

///|
#borrow(queryId)
extern "c" fn epoxy_glGetFirstPerfQueryIdINTEL(
  fp : CPtr,
  queryId : FixedArray[UInt],
) -> Unit = "epoxy_glGetFirstPerfQueryIdINTEL"

///|
pub fn gl_get_first_perf_query_id_intel(queryId : FixedArray[UInt]) -> Unit {
  epoxy_glGetFirstPerfQueryIdINTEL(d_glGetFirstPerfQueryIdINTEL.get(), queryId)
}

///|
let d_glGetFixedv : Dispatch = Dispatch::new("glGetFixedv")

///|
#borrow(params)
extern "c" fn epoxy_glGetFixedv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFixedv"

///|
pub fn gl_get_fixedv(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glGetFixedv(d_glGetFixedv.get(), pname, params)
}

///|
let d_glGetFixedvOES : Dispatch = Dispatch::new("glGetFixedvOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetFixedvOES(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFixedvOES"

///|
pub fn gl_get_fixedv_oes(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glGetFixedvOES(d_glGetFixedvOES.get(), pname, params)
}

///|
let d_glGetFloatIndexedvEXT : Dispatch = Dispatch::with_aliases(
  "glGetFloatIndexedvEXT",
  ["glGetFloati_v", "glGetFloati_vEXT", "glGetFloati_vNV", "glGetFloati_vOES"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetFloatIndexedvEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetFloatIndexedvEXT"

///|
pub fn gl_get_float_indexedv_ext(
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit {
  epoxy_glGetFloatIndexedvEXT(
    d_glGetFloatIndexedvEXT.get(),
    target,
    index,
    data,
  )
}

///|
let d_glGetFloati_v : Dispatch = Dispatch::with_aliases("glGetFloati_v", [
  "glGetFloatIndexedvEXT", "glGetFloati_vEXT", "glGetFloati_vNV", "glGetFloati_vOES",
])

///|
#borrow(data)
extern "c" fn epoxy_glGetFloati_v(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetFloati_v"

///|
pub fn gl_get_floati_v(
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit {
  epoxy_glGetFloati_v(d_glGetFloati_v.get(), target, index, data)
}

///|
let d_glGetFloati_vEXT : Dispatch = Dispatch::with_aliases("glGetFloati_vEXT", [
  "glGetFloatIndexedvEXT", "glGetFloati_v", "glGetFloati_vNV", "glGetFloati_vOES",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetFloati_vEXT(
  fp : CPtr,
  pname : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetFloati_vEXT"

///|
pub fn gl_get_floati_v_ext(
  pname : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetFloati_vEXT(d_glGetFloati_vEXT.get(), pname, index, params)
}

///|
let d_glGetFloati_vNV : Dispatch = Dispatch::with_aliases("glGetFloati_vNV", [
  "glGetFloatIndexedvEXT", "glGetFloati_v", "glGetFloati_vEXT", "glGetFloati_vOES",
])

///|
#borrow(data)
extern "c" fn epoxy_glGetFloati_vNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetFloati_vNV"

///|
pub fn gl_get_floati_v_nv(
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit {
  epoxy_glGetFloati_vNV(d_glGetFloati_vNV.get(), target, index, data)
}

///|
let d_glGetFloati_vOES : Dispatch = Dispatch::with_aliases("glGetFloati_vOES", [
  "glGetFloatIndexedvEXT", "glGetFloati_v", "glGetFloati_vEXT", "glGetFloati_vNV",
])

///|
#borrow(data)
extern "c" fn epoxy_glGetFloati_vOES(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetFloati_vOES"

///|
pub fn gl_get_floati_v_oes(
  target : UInt,
  index : UInt,
  data : FixedArray[Float],
) -> Unit {
  epoxy_glGetFloati_vOES(d_glGetFloati_vOES.get(), target, index, data)
}

///|
let d_glGetFloatv : Dispatch = Dispatch::new("glGetFloatv")

///|
#borrow(data)
extern "c" fn epoxy_glGetFloatv(
  fp : CPtr,
  pname : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetFloatv"

///|
pub fn gl_get_floatv(pname : UInt, data : FixedArray[Float]) -> Unit {
  epoxy_glGetFloatv(d_glGetFloatv.get(), pname, data)
}

///|
let d_glGetFogFuncSGIS : Dispatch = Dispatch::new("glGetFogFuncSGIS")

///|
#borrow(points)
extern "c" fn epoxy_glGetFogFuncSGIS(
  fp : CPtr,
  points : FixedArray[Float],
) -> Unit = "epoxy_glGetFogFuncSGIS"

///|
pub fn gl_get_fog_func_sgis(points : FixedArray[Float]) -> Unit {
  epoxy_glGetFogFuncSGIS(d_glGetFogFuncSGIS.get(), points)
}

///|
let d_glGetFragDataIndex : Dispatch = Dispatch::with_aliases(
  "glGetFragDataIndex",
  ["glGetFragDataIndexEXT"],
)

///|
#borrow(name)
extern "c" fn epoxy_glGetFragDataIndex(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetFragDataIndex"

///|
pub fn gl_get_frag_data_index(program : UInt, name : Bytes) -> Int {
  epoxy_glGetFragDataIndex(d_glGetFragDataIndex.get(), program, name)
}

///|
let d_glGetFragDataIndexEXT : Dispatch = Dispatch::with_aliases(
  "glGetFragDataIndexEXT",
  ["glGetFragDataIndex"],
)

///|
#borrow(name)
extern "c" fn epoxy_glGetFragDataIndexEXT(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetFragDataIndexEXT"

///|
pub fn gl_get_frag_data_index_ext(program : UInt, name : Bytes) -> Int {
  epoxy_glGetFragDataIndexEXT(d_glGetFragDataIndexEXT.get(), program, name)
}

///|
let d_glGetFragDataLocation : Dispatch = Dispatch::with_aliases(
  "glGetFragDataLocation",
  ["glGetFragDataLocationEXT"],
)

///|
#borrow(name)
extern "c" fn epoxy_glGetFragDataLocation(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetFragDataLocation"

///|
pub fn gl_get_frag_data_location(program : UInt, name : Bytes) -> Int {
  epoxy_glGetFragDataLocation(d_glGetFragDataLocation.get(), program, name)
}

///|
let d_glGetFragDataLocationEXT : Dispatch = Dispatch::with_aliases(
  "glGetFragDataLocationEXT",
  ["glGetFragDataLocation"],
)

///|
#borrow(name)
extern "c" fn epoxy_glGetFragDataLocationEXT(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetFragDataLocationEXT"

///|
pub fn gl_get_frag_data_location_ext(program : UInt, name : Bytes) -> Int {
  epoxy_glGetFragDataLocationEXT(
    d_glGetFragDataLocationEXT.get(),
    program,
    name,
  )
}

///|
let d_glGetFragmentLightfvSGIX : Dispatch = Dispatch::new(
  "glGetFragmentLightfvSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFragmentLightfvSGIX(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetFragmentLightfvSGIX"

///|
pub fn gl_get_fragment_lightfv_sgix(
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetFragmentLightfvSGIX(
    d_glGetFragmentLightfvSGIX.get(),
    light,
    pname,
    params,
  )
}

///|
let d_glGetFragmentLightivSGIX : Dispatch = Dispatch::new(
  "glGetFragmentLightivSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFragmentLightivSGIX(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFragmentLightivSGIX"

///|
pub fn gl_get_fragment_lightiv_sgix(
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFragmentLightivSGIX(
    d_glGetFragmentLightivSGIX.get(),
    light,
    pname,
    params,
  )
}

///|
let d_glGetFragmentMaterialfvSGIX : Dispatch = Dispatch::new(
  "glGetFragmentMaterialfvSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFragmentMaterialfvSGIX(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetFragmentMaterialfvSGIX"

///|
pub fn gl_get_fragment_materialfv_sgix(
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetFragmentMaterialfvSGIX(
    d_glGetFragmentMaterialfvSGIX.get(),
    face,
    pname,
    params,
  )
}

///|
let d_glGetFragmentMaterialivSGIX : Dispatch = Dispatch::new(
  "glGetFragmentMaterialivSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFragmentMaterialivSGIX(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFragmentMaterialivSGIX"

///|
pub fn gl_get_fragment_materialiv_sgix(
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFragmentMaterialivSGIX(
    d_glGetFragmentMaterialivSGIX.get(),
    face,
    pname,
    params,
  )
}

///|
let d_glGetFragmentShadingRatesEXT : Dispatch = Dispatch::new(
  "glGetFragmentShadingRatesEXT",
)

///|
#borrow(count, shadingRates)
extern "c" fn epoxy_glGetFragmentShadingRatesEXT(
  fp : CPtr,
  samples : Int,
  maxCount : Int,
  count : FixedArray[Int],
  shadingRates : FixedArray[UInt],
) -> Unit = "epoxy_glGetFragmentShadingRatesEXT"

///|
pub fn gl_get_fragment_shading_rates_ext(
  samples : Int,
  maxCount : Int,
  count : FixedArray[Int],
  shadingRates : FixedArray[UInt],
) -> Unit {
  epoxy_glGetFragmentShadingRatesEXT(
    d_glGetFragmentShadingRatesEXT.get(),
    samples,
    maxCount,
    count,
    shadingRates,
  )
}

///|
let d_glGetFramebufferAttachmentParameteriv : Dispatch = Dispatch::with_aliases(
  "glGetFramebufferAttachmentParameteriv",
  ["glGetFramebufferAttachmentParameterivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFramebufferAttachmentParameteriv(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFramebufferAttachmentParameteriv"

///|
pub fn gl_get_framebuffer_attachment_parameteriv(
  target : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFramebufferAttachmentParameteriv(
    d_glGetFramebufferAttachmentParameteriv.get(),
    target,
    attachment,
    pname,
    params,
  )
}

///|
let d_glGetFramebufferAttachmentParameterivEXT : Dispatch = Dispatch::with_aliases(
  "glGetFramebufferAttachmentParameterivEXT",
  ["glGetFramebufferAttachmentParameteriv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFramebufferAttachmentParameterivEXT(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFramebufferAttachmentParameterivEXT"

///|
pub fn gl_get_framebuffer_attachment_parameteriv_ext(
  target : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFramebufferAttachmentParameterivEXT(
    d_glGetFramebufferAttachmentParameterivEXT.get(),
    target,
    attachment,
    pname,
    params,
  )
}

///|
let d_glGetFramebufferAttachmentParameterivOES : Dispatch = Dispatch::new(
  "glGetFramebufferAttachmentParameterivOES",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFramebufferAttachmentParameterivOES(
  fp : CPtr,
  target : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFramebufferAttachmentParameterivOES"

///|
pub fn gl_get_framebuffer_attachment_parameteriv_oes(
  target : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFramebufferAttachmentParameterivOES(
    d_glGetFramebufferAttachmentParameterivOES.get(),
    target,
    attachment,
    pname,
    params,
  )
}

///|
let d_glGetFramebufferParameterfvAMD : Dispatch = Dispatch::new(
  "glGetFramebufferParameterfvAMD",
)

///|
#borrow(values)
extern "c" fn epoxy_glGetFramebufferParameterfvAMD(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  size : Int,
  values : FixedArray[Float],
) -> Unit = "epoxy_glGetFramebufferParameterfvAMD"

///|
pub fn gl_get_framebuffer_parameterfv_amd(
  target : UInt,
  pname : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  size : Int,
  values : FixedArray[Float],
) -> Unit {
  epoxy_glGetFramebufferParameterfvAMD(
    d_glGetFramebufferParameterfvAMD.get(),
    target,
    pname,
    numsamples,
    pixelindex,
    size,
    values,
  )
}

///|
let d_glGetFramebufferParameteriv : Dispatch = Dispatch::new(
  "glGetFramebufferParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFramebufferParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFramebufferParameteriv"

///|
pub fn gl_get_framebuffer_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFramebufferParameteriv(
    d_glGetFramebufferParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetFramebufferParameterivEXT : Dispatch = Dispatch::new(
  "glGetFramebufferParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFramebufferParameterivEXT(
  fp : CPtr,
  framebuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFramebufferParameterivEXT"

///|
pub fn gl_get_framebuffer_parameteriv_ext(
  framebuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFramebufferParameterivEXT(
    d_glGetFramebufferParameterivEXT.get(),
    framebuffer,
    pname,
    params,
  )
}

///|
let d_glGetFramebufferPixelLocalStorageSizeEXT : Dispatch = Dispatch::new(
  "glGetFramebufferPixelLocalStorageSizeEXT",
)

///|
extern "c" fn epoxy_glGetFramebufferPixelLocalStorageSizeEXT(
  fp : CPtr,
  target : UInt,
) -> Int = "epoxy_glGetFramebufferPixelLocalStorageSizeEXT"

///|
pub fn gl_get_framebuffer_pixel_local_storage_size_ext(target : UInt) -> Int {
  epoxy_glGetFramebufferPixelLocalStorageSizeEXT(
    d_glGetFramebufferPixelLocalStorageSizeEXT.get(),
    target,
  )
}

///|
let d_glGetGraphicsResetStatus : Dispatch = Dispatch::with_aliases(
  "glGetGraphicsResetStatus",
  ["glGetGraphicsResetStatusEXT", "glGetGraphicsResetStatusKHR"],
)

///|
extern "c" fn epoxy_glGetGraphicsResetStatus(fp : CPtr) -> UInt = "epoxy_glGetGraphicsResetStatus"

///|
pub fn gl_get_graphics_reset_status() -> UInt {
  epoxy_glGetGraphicsResetStatus(d_glGetGraphicsResetStatus.get())
}

///|
let d_glGetGraphicsResetStatusARB : Dispatch = Dispatch::new(
  "glGetGraphicsResetStatusARB",
)

///|
extern "c" fn epoxy_glGetGraphicsResetStatusARB(fp : CPtr) -> UInt = "epoxy_glGetGraphicsResetStatusARB"

///|
pub fn gl_get_graphics_reset_status_arb() -> UInt {
  epoxy_glGetGraphicsResetStatusARB(d_glGetGraphicsResetStatusARB.get())
}

///|
let d_glGetGraphicsResetStatusEXT : Dispatch = Dispatch::with_aliases(
  "glGetGraphicsResetStatusEXT",
  ["glGetGraphicsResetStatus", "glGetGraphicsResetStatusKHR"],
)

///|
extern "c" fn epoxy_glGetGraphicsResetStatusEXT(fp : CPtr) -> UInt = "epoxy_glGetGraphicsResetStatusEXT"

///|
pub fn gl_get_graphics_reset_status_ext() -> UInt {
  epoxy_glGetGraphicsResetStatusEXT(d_glGetGraphicsResetStatusEXT.get())
}

///|
let d_glGetGraphicsResetStatusKHR : Dispatch = Dispatch::with_aliases(
  "glGetGraphicsResetStatusKHR",
  ["glGetGraphicsResetStatus", "glGetGraphicsResetStatusEXT"],
)

///|
extern "c" fn epoxy_glGetGraphicsResetStatusKHR(fp : CPtr) -> UInt = "epoxy_glGetGraphicsResetStatusKHR"

///|
pub fn gl_get_graphics_reset_status_khr() -> UInt {
  epoxy_glGetGraphicsResetStatusKHR(d_glGetGraphicsResetStatusKHR.get())
}

///|
let d_glGetHistogram : Dispatch = Dispatch::new("glGetHistogram")

///|
#borrow(values)
extern "c" fn epoxy_glGetHistogram(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit = "epoxy_glGetHistogram"

///|
pub fn gl_get_histogram(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit {
  epoxy_glGetHistogram(
    d_glGetHistogram.get(),
    target,
    reset,
    format,
    type_,
    values,
  )
}

///|
let d_glGetHistogramEXT : Dispatch = Dispatch::new("glGetHistogramEXT")

///|
#borrow(values)
extern "c" fn epoxy_glGetHistogramEXT(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit = "epoxy_glGetHistogramEXT"

///|
pub fn gl_get_histogram_ext(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit {
  epoxy_glGetHistogramEXT(
    d_glGetHistogramEXT.get(),
    target,
    reset,
    format,
    type_,
    values,
  )
}

///|
let d_glGetHistogramParameterfv : Dispatch = Dispatch::new(
  "glGetHistogramParameterfv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetHistogramParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetHistogramParameterfv"

///|
pub fn gl_get_histogram_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetHistogramParameterfv(
    d_glGetHistogramParameterfv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetHistogramParameterfvEXT : Dispatch = Dispatch::new(
  "glGetHistogramParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetHistogramParameterfvEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetHistogramParameterfvEXT"

///|
pub fn gl_get_histogram_parameterfv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetHistogramParameterfvEXT(
    d_glGetHistogramParameterfvEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetHistogramParameteriv : Dispatch = Dispatch::new(
  "glGetHistogramParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetHistogramParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetHistogramParameteriv"

///|
pub fn gl_get_histogram_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetHistogramParameteriv(
    d_glGetHistogramParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetHistogramParameterivEXT : Dispatch = Dispatch::new(
  "glGetHistogramParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetHistogramParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetHistogramParameterivEXT"

///|
pub fn gl_get_histogram_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetHistogramParameterivEXT(
    d_glGetHistogramParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetHistogramParameterxvOES : Dispatch = Dispatch::new(
  "glGetHistogramParameterxvOES",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetHistogramParameterxvOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetHistogramParameterxvOES"

///|
pub fn gl_get_histogram_parameterxv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetHistogramParameterxvOES(
    d_glGetHistogramParameterxvOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetImageHandleARB : Dispatch = Dispatch::new("glGetImageHandleARB")

///|
extern "c" fn epoxy_glGetImageHandleARB(
  fp : CPtr,
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  format : UInt,
) -> UInt64 = "epoxy_glGetImageHandleARB"

///|
pub fn gl_get_image_handle_arb(
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  format : UInt,
) -> UInt64 {
  epoxy_glGetImageHandleARB(
    d_glGetImageHandleARB.get(),
    texture,
    level,
    layered,
    layer,
    format,
  )
}

///|
let d_glGetImageHandleNV : Dispatch = Dispatch::new("glGetImageHandleNV")

///|
extern "c" fn epoxy_glGetImageHandleNV(
  fp : CPtr,
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  format : UInt,
) -> UInt64 = "epoxy_glGetImageHandleNV"

///|
pub fn gl_get_image_handle_nv(
  texture : UInt,
  level : Int,
  layered : Bool,
  layer : Int,
  format : UInt,
) -> UInt64 {
  epoxy_glGetImageHandleNV(
    d_glGetImageHandleNV.get(),
    texture,
    level,
    layered,
    layer,
    format,
  )
}

///|
let d_glGetImageTransformParameterfvHP : Dispatch = Dispatch::new(
  "glGetImageTransformParameterfvHP",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetImageTransformParameterfvHP(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetImageTransformParameterfvHP"

///|
pub fn gl_get_image_transform_parameterfv_hp(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetImageTransformParameterfvHP(
    d_glGetImageTransformParameterfvHP.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetImageTransformParameterivHP : Dispatch = Dispatch::new(
  "glGetImageTransformParameterivHP",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetImageTransformParameterivHP(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetImageTransformParameterivHP"

///|
pub fn gl_get_image_transform_parameteriv_hp(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetImageTransformParameterivHP(
    d_glGetImageTransformParameterivHP.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetInstrumentsSGIX : Dispatch = Dispatch::new("glGetInstrumentsSGIX")

///|
extern "c" fn epoxy_glGetInstrumentsSGIX(fp : CPtr) -> Int = "epoxy_glGetInstrumentsSGIX"

///|
pub fn gl_get_instruments_sgix() -> Int {
  epoxy_glGetInstrumentsSGIX(d_glGetInstrumentsSGIX.get())
}

///|
let d_glGetInteger64i_v : Dispatch = Dispatch::new("glGetInteger64i_v")

///|
#borrow(data)
extern "c" fn epoxy_glGetInteger64i_v(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Int64],
) -> Unit = "epoxy_glGetInteger64i_v"

///|
pub fn gl_get_integer64i_v(
  target : UInt,
  index : UInt,
  data : FixedArray[Int64],
) -> Unit {
  epoxy_glGetInteger64i_v(d_glGetInteger64i_v.get(), target, index, data)
}

///|
let d_glGetInteger64v : Dispatch = Dispatch::with_aliases("glGetInteger64v", [
  "glGetInteger64vAPPLE", "glGetInteger64vEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glGetInteger64v(
  fp : CPtr,
  pname : UInt,
  data : FixedArray[Int64],
) -> Unit = "epoxy_glGetInteger64v"

///|
pub fn gl_get_integer64v(pname : UInt, data : FixedArray[Int64]) -> Unit {
  epoxy_glGetInteger64v(d_glGetInteger64v.get(), pname, data)
}

///|
let d_glGetInteger64vAPPLE : Dispatch = Dispatch::with_aliases(
  "glGetInteger64vAPPLE",
  ["glGetInteger64v", "glGetInteger64vEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetInteger64vAPPLE(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetInteger64vAPPLE"

///|
pub fn gl_get_integer64v_apple(
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetInteger64vAPPLE(d_glGetInteger64vAPPLE.get(), pname, params)
}

///|
let d_glGetInteger64vEXT : Dispatch = Dispatch::with_aliases(
  "glGetInteger64vEXT",
  ["glGetInteger64v", "glGetInteger64vAPPLE"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetInteger64vEXT(
  fp : CPtr,
  pname : UInt,
  data : FixedArray[Int64],
) -> Unit = "epoxy_glGetInteger64vEXT"

///|
pub fn gl_get_integer64v_ext(pname : UInt, data : FixedArray[Int64]) -> Unit {
  epoxy_glGetInteger64vEXT(d_glGetInteger64vEXT.get(), pname, data)
}

///|
let d_glGetIntegerIndexedvEXT : Dispatch = Dispatch::with_aliases(
  "glGetIntegerIndexedvEXT",
  ["glGetIntegeri_v"],
)

///|
#borrow(data)
extern "c" fn epoxy_glGetIntegerIndexedvEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Int],
) -> Unit = "epoxy_glGetIntegerIndexedvEXT"

///|
pub fn gl_get_integer_indexedv_ext(
  target : UInt,
  index : UInt,
  data : FixedArray[Int],
) -> Unit {
  epoxy_glGetIntegerIndexedvEXT(
    d_glGetIntegerIndexedvEXT.get(),
    target,
    index,
    data,
  )
}

///|
let d_glGetIntegeri_v : Dispatch = Dispatch::with_aliases("glGetIntegeri_v", [
  "glGetIntegerIndexedvEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glGetIntegeri_v(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Int],
) -> Unit = "epoxy_glGetIntegeri_v"

///|
pub fn gl_get_integeri_v(
  target : UInt,
  index : UInt,
  data : FixedArray[Int],
) -> Unit {
  epoxy_glGetIntegeri_v(d_glGetIntegeri_v.get(), target, index, data)
}

///|
let d_glGetIntegeri_vEXT : Dispatch = Dispatch::new("glGetIntegeri_vEXT")

///|
#borrow(data)
extern "c" fn epoxy_glGetIntegeri_vEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : FixedArray[Int],
) -> Unit = "epoxy_glGetIntegeri_vEXT"

///|
pub fn gl_get_integeri_v_ext(
  target : UInt,
  index : UInt,
  data : FixedArray[Int],
) -> Unit {
  epoxy_glGetIntegeri_vEXT(d_glGetIntegeri_vEXT.get(), target, index, data)
}

///|
let d_glGetIntegerui64i_vNV : Dispatch = Dispatch::new("glGetIntegerui64i_vNV")

///|
#borrow(result)
extern "c" fn epoxy_glGetIntegerui64i_vNV(
  fp : CPtr,
  value : UInt,
  index : UInt,
  result : FixedArray[UInt64],
) -> Unit = "epoxy_glGetIntegerui64i_vNV"

///|
pub fn gl_get_integerui64i_v_nv(
  value : UInt,
  index : UInt,
  result : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetIntegerui64i_vNV(
    d_glGetIntegerui64i_vNV.get(),
    value,
    index,
    result,
  )
}

///|
let d_glGetIntegerui64vNV : Dispatch = Dispatch::new("glGetIntegerui64vNV")

///|
#borrow(result)
extern "c" fn epoxy_glGetIntegerui64vNV(
  fp : CPtr,
  value : UInt,
  result : FixedArray[UInt64],
) -> Unit = "epoxy_glGetIntegerui64vNV"

///|
pub fn gl_get_integerui64v_nv(
  value : UInt,
  result : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetIntegerui64vNV(d_glGetIntegerui64vNV.get(), value, result)
}

///|
let d_glGetIntegerv : Dispatch = Dispatch::new("glGetIntegerv")

///|
#borrow(data)
extern "c" fn epoxy_glGetIntegerv(
  fp : CPtr,
  pname : UInt,
  data : FixedArray[Int],
) -> Unit = "epoxy_glGetIntegerv"

///|
pub fn gl_get_integerv(pname : UInt, data : FixedArray[Int]) -> Unit {
  epoxy_glGetIntegerv(d_glGetIntegerv.get(), pname, data)
}

///|
let d_glGetInternalformatSampleivNV : Dispatch = Dispatch::new(
  "glGetInternalformatSampleivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetInternalformatSampleivNV(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  samples : Int,
  pname : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetInternalformatSampleivNV"

///|
pub fn gl_get_internalformat_sampleiv_nv(
  target : UInt,
  internalformat : UInt,
  samples : Int,
  pname : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetInternalformatSampleivNV(
    d_glGetInternalformatSampleivNV.get(),
    target,
    internalformat,
    samples,
    pname,
    count,
    params,
  )
}

///|
let d_glGetInternalformati64v : Dispatch = Dispatch::new(
  "glGetInternalformati64v",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetInternalformati64v(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  pname : UInt,
  count : Int,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetInternalformati64v"

///|
pub fn gl_get_internalformati64v(
  target : UInt,
  internalformat : UInt,
  pname : UInt,
  count : Int,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetInternalformati64v(
    d_glGetInternalformati64v.get(),
    target,
    internalformat,
    pname,
    count,
    params,
  )
}

///|
let d_glGetInternalformativ : Dispatch = Dispatch::new("glGetInternalformativ")

///|
#borrow(params)
extern "c" fn epoxy_glGetInternalformativ(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  pname : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetInternalformativ"

///|
pub fn gl_get_internalformativ(
  target : UInt,
  internalformat : UInt,
  pname : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetInternalformativ(
    d_glGetInternalformativ.get(),
    target,
    internalformat,
    pname,
    count,
    params,
  )
}

///|
let d_glGetInvariantBooleanvEXT : Dispatch = Dispatch::new(
  "glGetInvariantBooleanvEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetInvariantBooleanvEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetInvariantBooleanvEXT"

///|
pub fn gl_get_invariant_booleanv_ext(
  id : UInt,
  value : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glGetInvariantBooleanvEXT(
    d_glGetInvariantBooleanvEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetInvariantFloatvEXT : Dispatch = Dispatch::new(
  "glGetInvariantFloatvEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetInvariantFloatvEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetInvariantFloatvEXT"

///|
pub fn gl_get_invariant_floatv_ext(
  id : UInt,
  value : UInt,
  data : FixedArray[Float],
) -> Unit {
  epoxy_glGetInvariantFloatvEXT(
    d_glGetInvariantFloatvEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetInvariantIntegervEXT : Dispatch = Dispatch::new(
  "glGetInvariantIntegervEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetInvariantIntegervEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : FixedArray[Int],
) -> Unit = "epoxy_glGetInvariantIntegervEXT"

///|
pub fn gl_get_invariant_integerv_ext(
  id : UInt,
  value : UInt,
  data : FixedArray[Int],
) -> Unit {
  epoxy_glGetInvariantIntegervEXT(
    d_glGetInvariantIntegervEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetLightfv : Dispatch = Dispatch::new("glGetLightfv")

///|
#borrow(params)
extern "c" fn epoxy_glGetLightfv(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetLightfv"

///|
pub fn gl_get_lightfv(
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetLightfv(d_glGetLightfv.get(), light, pname, params)
}

///|
let d_glGetLightiv : Dispatch = Dispatch::new("glGetLightiv")

///|
#borrow(params)
extern "c" fn epoxy_glGetLightiv(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetLightiv"

///|
pub fn gl_get_lightiv(
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetLightiv(d_glGetLightiv.get(), light, pname, params)
}

///|
let d_glGetLightxOES : Dispatch = Dispatch::new("glGetLightxOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetLightxOES(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetLightxOES"

///|
pub fn gl_get_lightx_oes(
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetLightxOES(d_glGetLightxOES.get(), light, pname, params)
}

///|
let d_glGetLightxv : Dispatch = Dispatch::new("glGetLightxv")

///|
#borrow(params)
extern "c" fn epoxy_glGetLightxv(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetLightxv"

///|
pub fn gl_get_lightxv(
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetLightxv(d_glGetLightxv.get(), light, pname, params)
}

///|
let d_glGetLightxvOES : Dispatch = Dispatch::new("glGetLightxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetLightxvOES(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetLightxvOES"

///|
pub fn gl_get_lightxv_oes(
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetLightxvOES(d_glGetLightxvOES.get(), light, pname, params)
}

///|
let d_glGetListParameterfvSGIX : Dispatch = Dispatch::new(
  "glGetListParameterfvSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetListParameterfvSGIX(
  fp : CPtr,
  list : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetListParameterfvSGIX"

///|
pub fn gl_get_list_parameterfv_sgix(
  list : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetListParameterfvSGIX(
    d_glGetListParameterfvSGIX.get(),
    list,
    pname,
    params,
  )
}

///|
let d_glGetListParameterivSGIX : Dispatch = Dispatch::new(
  "glGetListParameterivSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetListParameterivSGIX(
  fp : CPtr,
  list : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetListParameterivSGIX"

///|
pub fn gl_get_list_parameteriv_sgix(
  list : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetListParameterivSGIX(
    d_glGetListParameterivSGIX.get(),
    list,
    pname,
    params,
  )
}

///|
let d_glGetLocalConstantBooleanvEXT : Dispatch = Dispatch::new(
  "glGetLocalConstantBooleanvEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetLocalConstantBooleanvEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetLocalConstantBooleanvEXT"

///|
pub fn gl_get_local_constant_booleanv_ext(
  id : UInt,
  value : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glGetLocalConstantBooleanvEXT(
    d_glGetLocalConstantBooleanvEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetLocalConstantFloatvEXT : Dispatch = Dispatch::new(
  "glGetLocalConstantFloatvEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetLocalConstantFloatvEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetLocalConstantFloatvEXT"

///|
pub fn gl_get_local_constant_floatv_ext(
  id : UInt,
  value : UInt,
  data : FixedArray[Float],
) -> Unit {
  epoxy_glGetLocalConstantFloatvEXT(
    d_glGetLocalConstantFloatvEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetLocalConstantIntegervEXT : Dispatch = Dispatch::new(
  "glGetLocalConstantIntegervEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetLocalConstantIntegervEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : FixedArray[Int],
) -> Unit = "epoxy_glGetLocalConstantIntegervEXT"

///|
pub fn gl_get_local_constant_integerv_ext(
  id : UInt,
  value : UInt,
  data : FixedArray[Int],
) -> Unit {
  epoxy_glGetLocalConstantIntegervEXT(
    d_glGetLocalConstantIntegervEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetMapAttribParameterfvNV : Dispatch = Dispatch::new(
  "glGetMapAttribParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMapAttribParameterfvNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMapAttribParameterfvNV"

///|
pub fn gl_get_map_attrib_parameterfv_nv(
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMapAttribParameterfvNV(
    d_glGetMapAttribParameterfvNV.get(),
    target,
    index,
    pname,
    params,
  )
}

///|
let d_glGetMapAttribParameterivNV : Dispatch = Dispatch::new(
  "glGetMapAttribParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMapAttribParameterivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMapAttribParameterivNV"

///|
pub fn gl_get_map_attrib_parameteriv_nv(
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMapAttribParameterivNV(
    d_glGetMapAttribParameterivNV.get(),
    target,
    index,
    pname,
    params,
  )
}

///|
let d_glGetMapControlPointsNV : Dispatch = Dispatch::new(
  "glGetMapControlPointsNV",
)

///|
#borrow(points)
extern "c" fn epoxy_glGetMapControlPointsNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  type_ : UInt,
  ustride : Int,
  vstride : Int,
  packed : Bool,
  points : Bytes,
) -> Unit = "epoxy_glGetMapControlPointsNV"

///|
pub fn gl_get_map_control_points_nv(
  target : UInt,
  index : UInt,
  type_ : UInt,
  ustride : Int,
  vstride : Int,
  packed : Bool,
  points : Bytes,
) -> Unit {
  epoxy_glGetMapControlPointsNV(
    d_glGetMapControlPointsNV.get(),
    target,
    index,
    type_,
    ustride,
    vstride,
    packed,
    points,
  )
}

///|
let d_glGetMapParameterfvNV : Dispatch = Dispatch::new("glGetMapParameterfvNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetMapParameterfvNV(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMapParameterfvNV"

///|
pub fn gl_get_map_parameterfv_nv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMapParameterfvNV(
    d_glGetMapParameterfvNV.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetMapParameterivNV : Dispatch = Dispatch::new("glGetMapParameterivNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetMapParameterivNV(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMapParameterivNV"

///|
pub fn gl_get_map_parameteriv_nv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMapParameterivNV(
    d_glGetMapParameterivNV.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetMapdv : Dispatch = Dispatch::new("glGetMapdv")

///|
#borrow(v)
extern "c" fn epoxy_glGetMapdv(
  fp : CPtr,
  target : UInt,
  query : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glGetMapdv"

///|
pub fn gl_get_mapdv(
  target : UInt,
  query : UInt,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glGetMapdv(d_glGetMapdv.get(), target, query, v)
}

///|
let d_glGetMapfv : Dispatch = Dispatch::new("glGetMapfv")

///|
#borrow(v)
extern "c" fn epoxy_glGetMapfv(
  fp : CPtr,
  target : UInt,
  query : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glGetMapfv"

///|
pub fn gl_get_mapfv(target : UInt, query : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glGetMapfv(d_glGetMapfv.get(), target, query, v)
}

///|
let d_glGetMapiv : Dispatch = Dispatch::new("glGetMapiv")

///|
#borrow(v)
extern "c" fn epoxy_glGetMapiv(
  fp : CPtr,
  target : UInt,
  query : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glGetMapiv"

///|
pub fn gl_get_mapiv(target : UInt, query : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glGetMapiv(d_glGetMapiv.get(), target, query, v)
}

///|
let d_glGetMapxvOES : Dispatch = Dispatch::new("glGetMapxvOES")

///|
#borrow(v)
extern "c" fn epoxy_glGetMapxvOES(
  fp : CPtr,
  target : UInt,
  query : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glGetMapxvOES"

///|
pub fn gl_get_mapxv_oes(
  target : UInt,
  query : UInt,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glGetMapxvOES(d_glGetMapxvOES.get(), target, query, v)
}

///|
let d_glGetMaterialfv : Dispatch = Dispatch::new("glGetMaterialfv")

///|
#borrow(params)
extern "c" fn epoxy_glGetMaterialfv(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMaterialfv"

///|
pub fn gl_get_materialfv(
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMaterialfv(d_glGetMaterialfv.get(), face, pname, params)
}

///|
let d_glGetMaterialiv : Dispatch = Dispatch::new("glGetMaterialiv")

///|
#borrow(params)
extern "c" fn epoxy_glGetMaterialiv(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMaterialiv"

///|
pub fn gl_get_materialiv(
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMaterialiv(d_glGetMaterialiv.get(), face, pname, params)
}

///|
let d_glGetMaterialxOES : Dispatch = Dispatch::new("glGetMaterialxOES")

///|
extern "c" fn epoxy_glGetMaterialxOES(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glGetMaterialxOES"

///|
pub fn gl_get_materialx_oes(face : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glGetMaterialxOES(d_glGetMaterialxOES.get(), face, pname, param)
}

///|
let d_glGetMaterialxv : Dispatch = Dispatch::new("glGetMaterialxv")

///|
#borrow(params)
extern "c" fn epoxy_glGetMaterialxv(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMaterialxv"

///|
pub fn gl_get_materialxv(
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMaterialxv(d_glGetMaterialxv.get(), face, pname, params)
}

///|
let d_glGetMaterialxvOES : Dispatch = Dispatch::new("glGetMaterialxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetMaterialxvOES(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMaterialxvOES"

///|
pub fn gl_get_materialxv_oes(
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMaterialxvOES(d_glGetMaterialxvOES.get(), face, pname, params)
}

///|
let d_glGetMemoryObjectDetachedResourcesuivNV : Dispatch = Dispatch::new(
  "glGetMemoryObjectDetachedResourcesuivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMemoryObjectDetachedResourcesuivNV(
  fp : CPtr,
  memory : UInt,
  pname : UInt,
  first : Int,
  count : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetMemoryObjectDetachedResourcesuivNV"

///|
pub fn gl_get_memory_object_detached_resourcesuiv_nv(
  memory : UInt,
  pname : UInt,
  first : Int,
  count : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetMemoryObjectDetachedResourcesuivNV(
    d_glGetMemoryObjectDetachedResourcesuivNV.get(),
    memory,
    pname,
    first,
    count,
    params,
  )
}

///|
let d_glGetMemoryObjectParameterivEXT : Dispatch = Dispatch::new(
  "glGetMemoryObjectParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMemoryObjectParameterivEXT(
  fp : CPtr,
  memoryObject : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMemoryObjectParameterivEXT"

///|
pub fn gl_get_memory_object_parameteriv_ext(
  memoryObject : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMemoryObjectParameterivEXT(
    d_glGetMemoryObjectParameterivEXT.get(),
    memoryObject,
    pname,
    params,
  )
}

///|
let d_glGetMinmax : Dispatch = Dispatch::new("glGetMinmax")

///|
#borrow(values)
extern "c" fn epoxy_glGetMinmax(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit = "epoxy_glGetMinmax"

///|
pub fn gl_get_minmax(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit {
  epoxy_glGetMinmax(d_glGetMinmax.get(), target, reset, format, type_, values)
}

///|
let d_glGetMinmaxEXT : Dispatch = Dispatch::new("glGetMinmaxEXT")

///|
#borrow(values)
extern "c" fn epoxy_glGetMinmaxEXT(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit = "epoxy_glGetMinmaxEXT"

///|
pub fn gl_get_minmax_ext(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  values : Bytes,
) -> Unit {
  epoxy_glGetMinmaxEXT(
    d_glGetMinmaxEXT.get(),
    target,
    reset,
    format,
    type_,
    values,
  )
}

///|
let d_glGetMinmaxParameterfv : Dispatch = Dispatch::new(
  "glGetMinmaxParameterfv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMinmaxParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMinmaxParameterfv"

///|
pub fn gl_get_minmax_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMinmaxParameterfv(
    d_glGetMinmaxParameterfv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetMinmaxParameterfvEXT : Dispatch = Dispatch::new(
  "glGetMinmaxParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMinmaxParameterfvEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMinmaxParameterfvEXT"

///|
pub fn gl_get_minmax_parameterfv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMinmaxParameterfvEXT(
    d_glGetMinmaxParameterfvEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetMinmaxParameteriv : Dispatch = Dispatch::new(
  "glGetMinmaxParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMinmaxParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMinmaxParameteriv"

///|
pub fn gl_get_minmax_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMinmaxParameteriv(
    d_glGetMinmaxParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetMinmaxParameterivEXT : Dispatch = Dispatch::new(
  "glGetMinmaxParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMinmaxParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMinmaxParameterivEXT"

///|
pub fn gl_get_minmax_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMinmaxParameterivEXT(
    d_glGetMinmaxParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexEnvfvEXT : Dispatch = Dispatch::new("glGetMultiTexEnvfvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexEnvfvEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMultiTexEnvfvEXT"

///|
pub fn gl_get_multi_tex_envfv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMultiTexEnvfvEXT(
    d_glGetMultiTexEnvfvEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexEnvivEXT : Dispatch = Dispatch::new("glGetMultiTexEnvivEXT")

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexEnvivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMultiTexEnvivEXT"

///|
pub fn gl_get_multi_tex_enviv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMultiTexEnvivEXT(
    d_glGetMultiTexEnvivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexGendvEXT : Dispatch = Dispatch::new("glGetMultiTexGendvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexGendvEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetMultiTexGendvEXT"

///|
pub fn gl_get_multi_tex_gendv_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetMultiTexGendvEXT(
    d_glGetMultiTexGendvEXT.get(),
    texunit,
    coord,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexGenfvEXT : Dispatch = Dispatch::new("glGetMultiTexGenfvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexGenfvEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMultiTexGenfvEXT"

///|
pub fn gl_get_multi_tex_genfv_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMultiTexGenfvEXT(
    d_glGetMultiTexGenfvEXT.get(),
    texunit,
    coord,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexGenivEXT : Dispatch = Dispatch::new("glGetMultiTexGenivEXT")

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexGenivEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMultiTexGenivEXT"

///|
pub fn gl_get_multi_tex_geniv_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMultiTexGenivEXT(
    d_glGetMultiTexGenivEXT.get(),
    texunit,
    coord,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexImageEXT : Dispatch = Dispatch::new("glGetMultiTexImageEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glGetMultiTexImageEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glGetMultiTexImageEXT"

///|
pub fn gl_get_multi_tex_image_ext(
  texunit : UInt,
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetMultiTexImageEXT(
    d_glGetMultiTexImageEXT.get(),
    texunit,
    target,
    level,
    format,
    type_,
    pixels,
  )
}

///|
let d_glGetMultiTexLevelParameterfvEXT : Dispatch = Dispatch::new(
  "glGetMultiTexLevelParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexLevelParameterfvEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMultiTexLevelParameterfvEXT"

///|
pub fn gl_get_multi_tex_level_parameterfv_ext(
  texunit : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMultiTexLevelParameterfvEXT(
    d_glGetMultiTexLevelParameterfvEXT.get(),
    texunit,
    target,
    level,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexLevelParameterivEXT : Dispatch = Dispatch::new(
  "glGetMultiTexLevelParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexLevelParameterivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMultiTexLevelParameterivEXT"

///|
pub fn gl_get_multi_tex_level_parameteriv_ext(
  texunit : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMultiTexLevelParameterivEXT(
    d_glGetMultiTexLevelParameterivEXT.get(),
    texunit,
    target,
    level,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexParameterIivEXT : Dispatch = Dispatch::new(
  "glGetMultiTexParameterIivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexParameterIivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMultiTexParameterIivEXT"

///|
pub fn gl_get_multi_tex_parameter_iiv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMultiTexParameterIivEXT(
    d_glGetMultiTexParameterIivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexParameterIuivEXT : Dispatch = Dispatch::new(
  "glGetMultiTexParameterIuivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexParameterIuivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetMultiTexParameterIuivEXT"

///|
pub fn gl_get_multi_tex_parameter_iuiv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetMultiTexParameterIuivEXT(
    d_glGetMultiTexParameterIuivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexParameterfvEXT : Dispatch = Dispatch::new(
  "glGetMultiTexParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexParameterfvEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetMultiTexParameterfvEXT"

///|
pub fn gl_get_multi_tex_parameterfv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetMultiTexParameterfvEXT(
    d_glGetMultiTexParameterfvEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glGetMultiTexParameterivEXT : Dispatch = Dispatch::new(
  "glGetMultiTexParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetMultiTexParameterivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetMultiTexParameterivEXT"

///|
pub fn gl_get_multi_tex_parameteriv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetMultiTexParameterivEXT(
    d_glGetMultiTexParameterivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glGetMultisamplefv : Dispatch = Dispatch::with_aliases(
  "glGetMultisamplefv",
  ["glGetMultisamplefvNV"],
)

///|
#borrow(val)
extern "c" fn epoxy_glGetMultisamplefv(
  fp : CPtr,
  pname : UInt,
  index : UInt,
  val : FixedArray[Float],
) -> Unit = "epoxy_glGetMultisamplefv"

///|
pub fn gl_get_multisamplefv(
  pname : UInt,
  index : UInt,
  val : FixedArray[Float],
) -> Unit {
  epoxy_glGetMultisamplefv(d_glGetMultisamplefv.get(), pname, index, val)
}

///|
let d_glGetMultisamplefvNV : Dispatch = Dispatch::with_aliases(
  "glGetMultisamplefvNV",
  ["glGetMultisamplefv"],
)

///|
#borrow(val)
extern "c" fn epoxy_glGetMultisamplefvNV(
  fp : CPtr,
  pname : UInt,
  index : UInt,
  val : FixedArray[Float],
) -> Unit = "epoxy_glGetMultisamplefvNV"

///|
pub fn gl_get_multisamplefv_nv(
  pname : UInt,
  index : UInt,
  val : FixedArray[Float],
) -> Unit {
  epoxy_glGetMultisamplefvNV(d_glGetMultisamplefvNV.get(), pname, index, val)
}

///|
let d_glGetNamedBufferParameteri64v : Dispatch = Dispatch::new(
  "glGetNamedBufferParameteri64v",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedBufferParameteri64v(
  fp : CPtr,
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetNamedBufferParameteri64v"

///|
pub fn gl_get_named_buffer_parameteri64v(
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetNamedBufferParameteri64v(
    d_glGetNamedBufferParameteri64v.get(),
    buffer,
    pname,
    params,
  )
}

///|
let d_glGetNamedBufferParameteriv : Dispatch = Dispatch::new(
  "glGetNamedBufferParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedBufferParameteriv(
  fp : CPtr,
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedBufferParameteriv"

///|
pub fn gl_get_named_buffer_parameteriv(
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedBufferParameteriv(
    d_glGetNamedBufferParameteriv.get(),
    buffer,
    pname,
    params,
  )
}

///|
let d_glGetNamedBufferParameterivEXT : Dispatch = Dispatch::new(
  "glGetNamedBufferParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedBufferParameterivEXT(
  fp : CPtr,
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedBufferParameterivEXT"

///|
pub fn gl_get_named_buffer_parameteriv_ext(
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedBufferParameterivEXT(
    d_glGetNamedBufferParameterivEXT.get(),
    buffer,
    pname,
    params,
  )
}

///|
let d_glGetNamedBufferParameterui64vNV : Dispatch = Dispatch::new(
  "glGetNamedBufferParameterui64vNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedBufferParameterui64vNV(
  fp : CPtr,
  buffer : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetNamedBufferParameterui64vNV"

///|
pub fn gl_get_named_buffer_parameterui64v_nv(
  buffer : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetNamedBufferParameterui64vNV(
    d_glGetNamedBufferParameterui64vNV.get(),
    buffer,
    pname,
    params,
  )
}

///|
let d_glGetNamedBufferSubData : Dispatch = Dispatch::new(
  "glGetNamedBufferSubData",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetNamedBufferSubData(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glGetNamedBufferSubData"

///|
pub fn gl_get_named_buffer_sub_data(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glGetNamedBufferSubData(
    d_glGetNamedBufferSubData.get(),
    buffer,
    offset,
    size,
    data,
  )
}

///|
let d_glGetNamedBufferSubDataEXT : Dispatch = Dispatch::new(
  "glGetNamedBufferSubDataEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetNamedBufferSubDataEXT(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glGetNamedBufferSubDataEXT"

///|
pub fn gl_get_named_buffer_sub_data_ext(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glGetNamedBufferSubDataEXT(
    d_glGetNamedBufferSubDataEXT.get(),
    buffer,
    offset,
    size,
    data,
  )
}

///|
let d_glGetNamedFramebufferParameterfvAMD : Dispatch = Dispatch::new(
  "glGetNamedFramebufferParameterfvAMD",
)

///|
#borrow(values)
extern "c" fn epoxy_glGetNamedFramebufferParameterfvAMD(
  fp : CPtr,
  framebuffer : UInt,
  pname : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  size : Int,
  values : FixedArray[Float],
) -> Unit = "epoxy_glGetNamedFramebufferParameterfvAMD"

///|
pub fn gl_get_named_framebuffer_parameterfv_amd(
  framebuffer : UInt,
  pname : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  size : Int,
  values : FixedArray[Float],
) -> Unit {
  epoxy_glGetNamedFramebufferParameterfvAMD(
    d_glGetNamedFramebufferParameterfvAMD.get(),
    framebuffer,
    pname,
    numsamples,
    pixelindex,
    size,
    values,
  )
}

///|
let d_glGetNamedFramebufferAttachmentParameteriv : Dispatch = Dispatch::new(
  "glGetNamedFramebufferAttachmentParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedFramebufferAttachmentParameteriv(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedFramebufferAttachmentParameteriv"

///|
pub fn gl_get_named_framebuffer_attachment_parameteriv(
  framebuffer : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedFramebufferAttachmentParameteriv(
    d_glGetNamedFramebufferAttachmentParameteriv.get(),
    framebuffer,
    attachment,
    pname,
    params,
  )
}

///|
let d_glGetNamedFramebufferAttachmentParameterivEXT : Dispatch = Dispatch::new(
  "glGetNamedFramebufferAttachmentParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedFramebufferAttachmentParameterivEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedFramebufferAttachmentParameterivEXT"

///|
pub fn gl_get_named_framebuffer_attachment_parameteriv_ext(
  framebuffer : UInt,
  attachment : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedFramebufferAttachmentParameterivEXT(
    d_glGetNamedFramebufferAttachmentParameterivEXT.get(),
    framebuffer,
    attachment,
    pname,
    params,
  )
}

///|
let d_glGetNamedFramebufferParameteriv : Dispatch = Dispatch::new(
  "glGetNamedFramebufferParameteriv",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetNamedFramebufferParameteriv(
  fp : CPtr,
  framebuffer : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedFramebufferParameteriv"

///|
pub fn gl_get_named_framebuffer_parameteriv(
  framebuffer : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedFramebufferParameteriv(
    d_glGetNamedFramebufferParameteriv.get(),
    framebuffer,
    pname,
    param,
  )
}

///|
let d_glGetNamedFramebufferParameterivEXT : Dispatch = Dispatch::new(
  "glGetNamedFramebufferParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedFramebufferParameterivEXT(
  fp : CPtr,
  framebuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedFramebufferParameterivEXT"

///|
pub fn gl_get_named_framebuffer_parameteriv_ext(
  framebuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedFramebufferParameterivEXT(
    d_glGetNamedFramebufferParameterivEXT.get(),
    framebuffer,
    pname,
    params,
  )
}

///|
let d_glGetNamedProgramLocalParameterIivEXT : Dispatch = Dispatch::new(
  "glGetNamedProgramLocalParameterIivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedProgramLocalParameterIivEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedProgramLocalParameterIivEXT"

///|
pub fn gl_get_named_program_local_parameter_iiv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedProgramLocalParameterIivEXT(
    d_glGetNamedProgramLocalParameterIivEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glGetNamedProgramLocalParameterIuivEXT : Dispatch = Dispatch::new(
  "glGetNamedProgramLocalParameterIuivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedProgramLocalParameterIuivEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetNamedProgramLocalParameterIuivEXT"

///|
pub fn gl_get_named_program_local_parameter_iuiv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetNamedProgramLocalParameterIuivEXT(
    d_glGetNamedProgramLocalParameterIuivEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glGetNamedProgramLocalParameterdvEXT : Dispatch = Dispatch::new(
  "glGetNamedProgramLocalParameterdvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedProgramLocalParameterdvEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetNamedProgramLocalParameterdvEXT"

///|
pub fn gl_get_named_program_local_parameterdv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetNamedProgramLocalParameterdvEXT(
    d_glGetNamedProgramLocalParameterdvEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glGetNamedProgramLocalParameterfvEXT : Dispatch = Dispatch::new(
  "glGetNamedProgramLocalParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedProgramLocalParameterfvEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetNamedProgramLocalParameterfvEXT"

///|
pub fn gl_get_named_program_local_parameterfv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetNamedProgramLocalParameterfvEXT(
    d_glGetNamedProgramLocalParameterfvEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glGetNamedProgramStringEXT : Dispatch = Dispatch::new(
  "glGetNamedProgramStringEXT",
)

///|
#borrow(string)
extern "c" fn epoxy_glGetNamedProgramStringEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  pname : UInt,
  string : Bytes,
) -> Unit = "epoxy_glGetNamedProgramStringEXT"

///|
pub fn gl_get_named_program_string_ext(
  program : UInt,
  target : UInt,
  pname : UInt,
  string : Bytes,
) -> Unit {
  epoxy_glGetNamedProgramStringEXT(
    d_glGetNamedProgramStringEXT.get(),
    program,
    target,
    pname,
    string,
  )
}

///|
let d_glGetNamedProgramivEXT : Dispatch = Dispatch::new(
  "glGetNamedProgramivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedProgramivEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedProgramivEXT"

///|
pub fn gl_get_named_programiv_ext(
  program : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedProgramivEXT(
    d_glGetNamedProgramivEXT.get(),
    program,
    target,
    pname,
    params,
  )
}

///|
let d_glGetNamedRenderbufferParameteriv : Dispatch = Dispatch::new(
  "glGetNamedRenderbufferParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedRenderbufferParameteriv(
  fp : CPtr,
  renderbuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedRenderbufferParameteriv"

///|
pub fn gl_get_named_renderbuffer_parameteriv(
  renderbuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedRenderbufferParameteriv(
    d_glGetNamedRenderbufferParameteriv.get(),
    renderbuffer,
    pname,
    params,
  )
}

///|
let d_glGetNamedRenderbufferParameterivEXT : Dispatch = Dispatch::new(
  "glGetNamedRenderbufferParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetNamedRenderbufferParameterivEXT(
  fp : CPtr,
  renderbuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedRenderbufferParameterivEXT"

///|
pub fn gl_get_named_renderbuffer_parameteriv_ext(
  renderbuffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedRenderbufferParameterivEXT(
    d_glGetNamedRenderbufferParameterivEXT.get(),
    renderbuffer,
    pname,
    params,
  )
}

///|
let d_glGetNamedStringARB : Dispatch = Dispatch::new("glGetNamedStringARB")

///|
#borrow(name, stringlen, string)
extern "c" fn epoxy_glGetNamedStringARB(
  fp : CPtr,
  namelen : Int,
  name : Bytes,
  bufSize : Int,
  stringlen : FixedArray[Int],
  string : Bytes,
) -> Unit = "epoxy_glGetNamedStringARB"

///|
pub fn gl_get_named_string_arb(
  namelen : Int,
  name : Bytes,
  bufSize : Int,
  stringlen : FixedArray[Int],
  string : Bytes,
) -> Unit {
  epoxy_glGetNamedStringARB(
    d_glGetNamedStringARB.get(),
    namelen,
    name,
    bufSize,
    stringlen,
    string,
  )
}

///|
let d_glGetNamedStringivARB : Dispatch = Dispatch::new("glGetNamedStringivARB")

///|
#borrow(name, params)
extern "c" fn epoxy_glGetNamedStringivARB(
  fp : CPtr,
  namelen : Int,
  name : Bytes,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetNamedStringivARB"

///|
pub fn gl_get_named_stringiv_arb(
  namelen : Int,
  name : Bytes,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetNamedStringivARB(
    d_glGetNamedStringivARB.get(),
    namelen,
    name,
    pname,
    params,
  )
}

///|
let d_glGetNextPerfQueryIdINTEL : Dispatch = Dispatch::new(
  "glGetNextPerfQueryIdINTEL",
)

///|
#borrow(nextQueryId)
extern "c" fn epoxy_glGetNextPerfQueryIdINTEL(
  fp : CPtr,
  queryId : UInt,
  nextQueryId : FixedArray[UInt],
) -> Unit = "epoxy_glGetNextPerfQueryIdINTEL"

///|
pub fn gl_get_next_perf_query_id_intel(
  queryId : UInt,
  nextQueryId : FixedArray[UInt],
) -> Unit {
  epoxy_glGetNextPerfQueryIdINTEL(
    d_glGetNextPerfQueryIdINTEL.get(),
    queryId,
    nextQueryId,
  )
}

///|
let d_glGetObjectBufferfvATI : Dispatch = Dispatch::new(
  "glGetObjectBufferfvATI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetObjectBufferfvATI(
  fp : CPtr,
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetObjectBufferfvATI"

///|
pub fn gl_get_object_bufferfv_ati(
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetObjectBufferfvATI(
    d_glGetObjectBufferfvATI.get(),
    buffer,
    pname,
    params,
  )
}

///|
let d_glGetObjectBufferivATI : Dispatch = Dispatch::new(
  "glGetObjectBufferivATI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetObjectBufferivATI(
  fp : CPtr,
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetObjectBufferivATI"

///|
pub fn gl_get_object_bufferiv_ati(
  buffer : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetObjectBufferivATI(
    d_glGetObjectBufferivATI.get(),
    buffer,
    pname,
    params,
  )
}

///|
let d_glGetObjectLabel : Dispatch = Dispatch::with_aliases("glGetObjectLabel", [
  "glGetObjectLabelKHR",
])

///|
#borrow(length, label)
extern "c" fn epoxy_glGetObjectLabel(
  fp : CPtr,
  identifier : UInt,
  name : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit = "epoxy_glGetObjectLabel"

///|
pub fn gl_get_object_label(
  identifier : UInt,
  name : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit {
  epoxy_glGetObjectLabel(
    d_glGetObjectLabel.get(),
    identifier,
    name,
    bufSize,
    length,
    label,
  )
}

///|
let d_glGetObjectLabelEXT : Dispatch = Dispatch::new("glGetObjectLabelEXT")

///|
#borrow(length, label)
extern "c" fn epoxy_glGetObjectLabelEXT(
  fp : CPtr,
  type_ : UInt,
  object : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit = "epoxy_glGetObjectLabelEXT"

///|
pub fn gl_get_object_label_ext(
  type_ : UInt,
  object : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit {
  epoxy_glGetObjectLabelEXT(
    d_glGetObjectLabelEXT.get(),
    type_,
    object,
    bufSize,
    length,
    label,
  )
}

///|
let d_glGetObjectLabelKHR : Dispatch = Dispatch::with_aliases(
  "glGetObjectLabelKHR",
  ["glGetObjectLabel"],
)

///|
#borrow(length, label)
extern "c" fn epoxy_glGetObjectLabelKHR(
  fp : CPtr,
  identifier : UInt,
  name : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit = "epoxy_glGetObjectLabelKHR"

///|
pub fn gl_get_object_label_khr(
  identifier : UInt,
  name : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit {
  epoxy_glGetObjectLabelKHR(
    d_glGetObjectLabelKHR.get(),
    identifier,
    name,
    bufSize,
    length,
    label,
  )
}

///|
let d_glGetObjectParameterivAPPLE : Dispatch = Dispatch::new(
  "glGetObjectParameterivAPPLE",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetObjectParameterivAPPLE(
  fp : CPtr,
  objectType : UInt,
  name : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetObjectParameterivAPPLE"

///|
pub fn gl_get_object_parameteriv_apple(
  objectType : UInt,
  name : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetObjectParameterivAPPLE(
    d_glGetObjectParameterivAPPLE.get(),
    objectType,
    name,
    pname,
    params,
  )
}

///|
let d_glGetObjectPtrLabel : Dispatch = Dispatch::with_aliases(
  "glGetObjectPtrLabel",
  ["glGetObjectPtrLabelKHR"],
)

///|
#borrow(ptr, length, label)
extern "c" fn epoxy_glGetObjectPtrLabel(
  fp : CPtr,
  ptr : Bytes,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit = "epoxy_glGetObjectPtrLabel"

///|
pub fn gl_get_object_ptr_label(
  ptr : Bytes,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit {
  epoxy_glGetObjectPtrLabel(
    d_glGetObjectPtrLabel.get(),
    ptr,
    bufSize,
    length,
    label,
  )
}

///|
let d_glGetObjectPtrLabelKHR : Dispatch = Dispatch::with_aliases(
  "glGetObjectPtrLabelKHR",
  ["glGetObjectPtrLabel"],
)

///|
#borrow(ptr, length, label)
extern "c" fn epoxy_glGetObjectPtrLabelKHR(
  fp : CPtr,
  ptr : Bytes,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit = "epoxy_glGetObjectPtrLabelKHR"

///|
pub fn gl_get_object_ptr_label_khr(
  ptr : Bytes,
  bufSize : Int,
  length : FixedArray[Int],
  label : Bytes,
) -> Unit {
  epoxy_glGetObjectPtrLabelKHR(
    d_glGetObjectPtrLabelKHR.get(),
    ptr,
    bufSize,
    length,
    label,
  )
}

///|
let d_glGetOcclusionQueryivNV : Dispatch = Dispatch::new(
  "glGetOcclusionQueryivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetOcclusionQueryivNV(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetOcclusionQueryivNV"

///|
pub fn gl_get_occlusion_queryiv_nv(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetOcclusionQueryivNV(
    d_glGetOcclusionQueryivNV.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetOcclusionQueryuivNV : Dispatch = Dispatch::new(
  "glGetOcclusionQueryuivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetOcclusionQueryuivNV(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetOcclusionQueryuivNV"

///|
pub fn gl_get_occlusion_queryuiv_nv(
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetOcclusionQueryuivNV(
    d_glGetOcclusionQueryuivNV.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetPathColorGenfvNV : Dispatch = Dispatch::new("glGetPathColorGenfvNV")

///|
#borrow(value)
extern "c" fn epoxy_glGetPathColorGenfvNV(
  fp : CPtr,
  color : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit = "epoxy_glGetPathColorGenfvNV"

///|
pub fn gl_get_path_color_genfv_nv(
  color : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glGetPathColorGenfvNV(
    d_glGetPathColorGenfvNV.get(),
    color,
    pname,
    value,
  )
}

///|
let d_glGetPathColorGenivNV : Dispatch = Dispatch::new("glGetPathColorGenivNV")

///|
#borrow(value)
extern "c" fn epoxy_glGetPathColorGenivNV(
  fp : CPtr,
  color : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit = "epoxy_glGetPathColorGenivNV"

///|
pub fn gl_get_path_color_geniv_nv(
  color : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glGetPathColorGenivNV(
    d_glGetPathColorGenivNV.get(),
    color,
    pname,
    value,
  )
}

///|
let d_glGetPathCommandsNV : Dispatch = Dispatch::new("glGetPathCommandsNV")

///|
#borrow(commands)
extern "c" fn epoxy_glGetPathCommandsNV(
  fp : CPtr,
  path : UInt,
  commands : Bytes,
) -> Unit = "epoxy_glGetPathCommandsNV"

///|
pub fn gl_get_path_commands_nv(path : UInt, commands : Bytes) -> Unit {
  epoxy_glGetPathCommandsNV(d_glGetPathCommandsNV.get(), path, commands)
}

///|
let d_glGetPathCoordsNV : Dispatch = Dispatch::new("glGetPathCoordsNV")

///|
#borrow(coords)
extern "c" fn epoxy_glGetPathCoordsNV(
  fp : CPtr,
  path : UInt,
  coords : FixedArray[Float],
) -> Unit = "epoxy_glGetPathCoordsNV"

///|
pub fn gl_get_path_coords_nv(path : UInt, coords : FixedArray[Float]) -> Unit {
  epoxy_glGetPathCoordsNV(d_glGetPathCoordsNV.get(), path, coords)
}

///|
let d_glGetPathDashArrayNV : Dispatch = Dispatch::new("glGetPathDashArrayNV")

///|
#borrow(dashArray)
extern "c" fn epoxy_glGetPathDashArrayNV(
  fp : CPtr,
  path : UInt,
  dashArray : FixedArray[Float],
) -> Unit = "epoxy_glGetPathDashArrayNV"

///|
pub fn gl_get_path_dash_array_nv(
  path : UInt,
  dashArray : FixedArray[Float],
) -> Unit {
  epoxy_glGetPathDashArrayNV(d_glGetPathDashArrayNV.get(), path, dashArray)
}

///|
let d_glGetPathLengthNV : Dispatch = Dispatch::new("glGetPathLengthNV")

///|
extern "c" fn epoxy_glGetPathLengthNV(
  fp : CPtr,
  path : UInt,
  startSegment : Int,
  numSegments : Int,
) -> Float = "epoxy_glGetPathLengthNV"

///|
pub fn gl_get_path_length_nv(
  path : UInt,
  startSegment : Int,
  numSegments : Int,
) -> Float {
  epoxy_glGetPathLengthNV(
    d_glGetPathLengthNV.get(),
    path,
    startSegment,
    numSegments,
  )
}

///|
let d_glGetPathMetricRangeNV : Dispatch = Dispatch::new(
  "glGetPathMetricRangeNV",
)

///|
#borrow(metrics)
extern "c" fn epoxy_glGetPathMetricRangeNV(
  fp : CPtr,
  metricQueryMask : UInt,
  firstPathName : UInt,
  numPaths : Int,
  stride : Int,
  metrics : FixedArray[Float],
) -> Unit = "epoxy_glGetPathMetricRangeNV"

///|
pub fn gl_get_path_metric_range_nv(
  metricQueryMask : UInt,
  firstPathName : UInt,
  numPaths : Int,
  stride : Int,
  metrics : FixedArray[Float],
) -> Unit {
  epoxy_glGetPathMetricRangeNV(
    d_glGetPathMetricRangeNV.get(),
    metricQueryMask,
    firstPathName,
    numPaths,
    stride,
    metrics,
  )
}

///|
let d_glGetPathMetricsNV : Dispatch = Dispatch::new("glGetPathMetricsNV")

///|
#borrow(paths, metrics)
extern "c" fn epoxy_glGetPathMetricsNV(
  fp : CPtr,
  metricQueryMask : UInt,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  stride : Int,
  metrics : FixedArray[Float],
) -> Unit = "epoxy_glGetPathMetricsNV"

///|
pub fn gl_get_path_metrics_nv(
  metricQueryMask : UInt,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  stride : Int,
  metrics : FixedArray[Float],
) -> Unit {
  epoxy_glGetPathMetricsNV(
    d_glGetPathMetricsNV.get(),
    metricQueryMask,
    numPaths,
    pathNameType,
    paths,
    pathBase,
    stride,
    metrics,
  )
}

///|
let d_glGetPathParameterfvNV : Dispatch = Dispatch::new(
  "glGetPathParameterfvNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glGetPathParameterfvNV(
  fp : CPtr,
  path : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit = "epoxy_glGetPathParameterfvNV"

///|
pub fn gl_get_path_parameterfv_nv(
  path : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glGetPathParameterfvNV(
    d_glGetPathParameterfvNV.get(),
    path,
    pname,
    value,
  )
}

///|
let d_glGetPathParameterivNV : Dispatch = Dispatch::new(
  "glGetPathParameterivNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glGetPathParameterivNV(
  fp : CPtr,
  path : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit = "epoxy_glGetPathParameterivNV"

///|
pub fn gl_get_path_parameteriv_nv(
  path : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glGetPathParameterivNV(
    d_glGetPathParameterivNV.get(),
    path,
    pname,
    value,
  )
}

///|
let d_glGetPathSpacingNV : Dispatch = Dispatch::new("glGetPathSpacingNV")

///|
#borrow(paths, returnedSpacing)
extern "c" fn epoxy_glGetPathSpacingNV(
  fp : CPtr,
  pathListMode : UInt,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  advanceScale : Float,
  kerningScale : Float,
  transformType : UInt,
  returnedSpacing : FixedArray[Float],
) -> Unit = "epoxy_glGetPathSpacingNV"

///|
pub fn gl_get_path_spacing_nv(
  pathListMode : UInt,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  advanceScale : Float,
  kerningScale : Float,
  transformType : UInt,
  returnedSpacing : FixedArray[Float],
) -> Unit {
  epoxy_glGetPathSpacingNV(
    d_glGetPathSpacingNV.get(),
    pathListMode,
    numPaths,
    pathNameType,
    paths,
    pathBase,
    advanceScale,
    kerningScale,
    transformType,
    returnedSpacing,
  )
}

///|
let d_glGetPathTexGenfvNV : Dispatch = Dispatch::new("glGetPathTexGenfvNV")

///|
#borrow(value)
extern "c" fn epoxy_glGetPathTexGenfvNV(
  fp : CPtr,
  texCoordSet : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit = "epoxy_glGetPathTexGenfvNV"

///|
pub fn gl_get_path_tex_genfv_nv(
  texCoordSet : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glGetPathTexGenfvNV(
    d_glGetPathTexGenfvNV.get(),
    texCoordSet,
    pname,
    value,
  )
}

///|
let d_glGetPathTexGenivNV : Dispatch = Dispatch::new("glGetPathTexGenivNV")

///|
#borrow(value)
extern "c" fn epoxy_glGetPathTexGenivNV(
  fp : CPtr,
  texCoordSet : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit = "epoxy_glGetPathTexGenivNV"

///|
pub fn gl_get_path_tex_geniv_nv(
  texCoordSet : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glGetPathTexGenivNV(
    d_glGetPathTexGenivNV.get(),
    texCoordSet,
    pname,
    value,
  )
}

///|
let d_glGetPerfCounterInfoINTEL : Dispatch = Dispatch::new(
  "glGetPerfCounterInfoINTEL",
)

///|
#borrow(counterName, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue)
extern "c" fn epoxy_glGetPerfCounterInfoINTEL(
  fp : CPtr,
  queryId : UInt,
  counterId : UInt,
  counterNameLength : UInt,
  counterName : Bytes,
  counterDescLength : UInt,
  counterDesc : Bytes,
  counterOffset : FixedArray[UInt],
  counterDataSize : FixedArray[UInt],
  counterTypeEnum : FixedArray[UInt],
  counterDataTypeEnum : FixedArray[UInt],
  rawCounterMaxValue : FixedArray[UInt64],
) -> Unit = "epoxy_glGetPerfCounterInfoINTEL"

///|
pub fn gl_get_perf_counter_info_intel(
  queryId : UInt,
  counterId : UInt,
  counterNameLength : UInt,
  counterName : Bytes,
  counterDescLength : UInt,
  counterDesc : Bytes,
  counterOffset : FixedArray[UInt],
  counterDataSize : FixedArray[UInt],
  counterTypeEnum : FixedArray[UInt],
  counterDataTypeEnum : FixedArray[UInt],
  rawCounterMaxValue : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetPerfCounterInfoINTEL(
    d_glGetPerfCounterInfoINTEL.get(),
    queryId,
    counterId,
    counterNameLength,
    counterName,
    counterDescLength,
    counterDesc,
    counterOffset,
    counterDataSize,
    counterTypeEnum,
    counterDataTypeEnum,
    rawCounterMaxValue,
  )
}

///|
let d_glGetPerfMonitorCounterDataAMD : Dispatch = Dispatch::new(
  "glGetPerfMonitorCounterDataAMD",
)

///|
#borrow(data, bytesWritten)
extern "c" fn epoxy_glGetPerfMonitorCounterDataAMD(
  fp : CPtr,
  monitor : UInt,
  pname : UInt,
  dataSize : Int,
  data : FixedArray[UInt],
  bytesWritten : FixedArray[Int],
) -> Unit = "epoxy_glGetPerfMonitorCounterDataAMD"

///|
pub fn gl_get_perf_monitor_counter_data_amd(
  monitor : UInt,
  pname : UInt,
  dataSize : Int,
  data : FixedArray[UInt],
  bytesWritten : FixedArray[Int],
) -> Unit {
  epoxy_glGetPerfMonitorCounterDataAMD(
    d_glGetPerfMonitorCounterDataAMD.get(),
    monitor,
    pname,
    dataSize,
    data,
    bytesWritten,
  )
}

///|
let d_glGetPerfMonitorCounterInfoAMD : Dispatch = Dispatch::new(
  "glGetPerfMonitorCounterInfoAMD",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetPerfMonitorCounterInfoAMD(
  fp : CPtr,
  group : UInt,
  counter : UInt,
  pname : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetPerfMonitorCounterInfoAMD"

///|
pub fn gl_get_perf_monitor_counter_info_amd(
  group : UInt,
  counter : UInt,
  pname : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glGetPerfMonitorCounterInfoAMD(
    d_glGetPerfMonitorCounterInfoAMD.get(),
    group,
    counter,
    pname,
    data,
  )
}

///|
let d_glGetPerfMonitorCounterStringAMD : Dispatch = Dispatch::new(
  "glGetPerfMonitorCounterStringAMD",
)

///|
#borrow(length, counterString)
extern "c" fn epoxy_glGetPerfMonitorCounterStringAMD(
  fp : CPtr,
  group : UInt,
  counter : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  counterString : Bytes,
) -> Unit = "epoxy_glGetPerfMonitorCounterStringAMD"

///|
pub fn gl_get_perf_monitor_counter_string_amd(
  group : UInt,
  counter : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  counterString : Bytes,
) -> Unit {
  epoxy_glGetPerfMonitorCounterStringAMD(
    d_glGetPerfMonitorCounterStringAMD.get(),
    group,
    counter,
    bufSize,
    length,
    counterString,
  )
}

///|
let d_glGetPerfMonitorCountersAMD : Dispatch = Dispatch::new(
  "glGetPerfMonitorCountersAMD",
)

///|
#borrow(numCounters, maxActiveCounters, counters)
extern "c" fn epoxy_glGetPerfMonitorCountersAMD(
  fp : CPtr,
  group : UInt,
  numCounters : FixedArray[Int],
  maxActiveCounters : FixedArray[Int],
  counterSize : Int,
  counters : FixedArray[UInt],
) -> Unit = "epoxy_glGetPerfMonitorCountersAMD"

///|
pub fn gl_get_perf_monitor_counters_amd(
  group : UInt,
  numCounters : FixedArray[Int],
  maxActiveCounters : FixedArray[Int],
  counterSize : Int,
  counters : FixedArray[UInt],
) -> Unit {
  epoxy_glGetPerfMonitorCountersAMD(
    d_glGetPerfMonitorCountersAMD.get(),
    group,
    numCounters,
    maxActiveCounters,
    counterSize,
    counters,
  )
}

///|
let d_glGetPerfMonitorGroupStringAMD : Dispatch = Dispatch::new(
  "glGetPerfMonitorGroupStringAMD",
)

///|
#borrow(length, groupString)
extern "c" fn epoxy_glGetPerfMonitorGroupStringAMD(
  fp : CPtr,
  group : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  groupString : Bytes,
) -> Unit = "epoxy_glGetPerfMonitorGroupStringAMD"

///|
pub fn gl_get_perf_monitor_group_string_amd(
  group : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  groupString : Bytes,
) -> Unit {
  epoxy_glGetPerfMonitorGroupStringAMD(
    d_glGetPerfMonitorGroupStringAMD.get(),
    group,
    bufSize,
    length,
    groupString,
  )
}

///|
let d_glGetPerfMonitorGroupsAMD : Dispatch = Dispatch::new(
  "glGetPerfMonitorGroupsAMD",
)

///|
#borrow(numGroups, groups)
extern "c" fn epoxy_glGetPerfMonitorGroupsAMD(
  fp : CPtr,
  numGroups : FixedArray[Int],
  groupsSize : Int,
  groups : FixedArray[UInt],
) -> Unit = "epoxy_glGetPerfMonitorGroupsAMD"

///|
pub fn gl_get_perf_monitor_groups_amd(
  numGroups : FixedArray[Int],
  groupsSize : Int,
  groups : FixedArray[UInt],
) -> Unit {
  epoxy_glGetPerfMonitorGroupsAMD(
    d_glGetPerfMonitorGroupsAMD.get(),
    numGroups,
    groupsSize,
    groups,
  )
}

///|
let d_glGetPerfQueryDataINTEL : Dispatch = Dispatch::new(
  "glGetPerfQueryDataINTEL",
)

///|
#borrow(data, bytesWritten)
extern "c" fn epoxy_glGetPerfQueryDataINTEL(
  fp : CPtr,
  queryHandle : UInt,
  flags : UInt,
  dataSize : Int,
  data : Bytes,
  bytesWritten : FixedArray[UInt],
) -> Unit = "epoxy_glGetPerfQueryDataINTEL"

///|
pub fn gl_get_perf_query_data_intel(
  queryHandle : UInt,
  flags : UInt,
  dataSize : Int,
  data : Bytes,
  bytesWritten : FixedArray[UInt],
) -> Unit {
  epoxy_glGetPerfQueryDataINTEL(
    d_glGetPerfQueryDataINTEL.get(),
    queryHandle,
    flags,
    dataSize,
    data,
    bytesWritten,
  )
}

///|
let d_glGetPerfQueryIdByNameINTEL : Dispatch = Dispatch::new(
  "glGetPerfQueryIdByNameINTEL",
)

///|
#borrow(queryName, queryId)
extern "c" fn epoxy_glGetPerfQueryIdByNameINTEL(
  fp : CPtr,
  queryName : Bytes,
  queryId : FixedArray[UInt],
) -> Unit = "epoxy_glGetPerfQueryIdByNameINTEL"

///|
pub fn gl_get_perf_query_id_by_name_intel(
  queryName : Bytes,
  queryId : FixedArray[UInt],
) -> Unit {
  epoxy_glGetPerfQueryIdByNameINTEL(
    d_glGetPerfQueryIdByNameINTEL.get(),
    queryName,
    queryId,
  )
}

///|
let d_glGetPerfQueryInfoINTEL : Dispatch = Dispatch::new(
  "glGetPerfQueryInfoINTEL",
)

///|
#borrow(queryName, dataSize, noCounters, noInstances, capsMask)
extern "c" fn epoxy_glGetPerfQueryInfoINTEL(
  fp : CPtr,
  queryId : UInt,
  queryNameLength : UInt,
  queryName : Bytes,
  dataSize : FixedArray[UInt],
  noCounters : FixedArray[UInt],
  noInstances : FixedArray[UInt],
  capsMask : FixedArray[UInt],
) -> Unit = "epoxy_glGetPerfQueryInfoINTEL"

///|
pub fn gl_get_perf_query_info_intel(
  queryId : UInt,
  queryNameLength : UInt,
  queryName : Bytes,
  dataSize : FixedArray[UInt],
  noCounters : FixedArray[UInt],
  noInstances : FixedArray[UInt],
  capsMask : FixedArray[UInt],
) -> Unit {
  epoxy_glGetPerfQueryInfoINTEL(
    d_glGetPerfQueryInfoINTEL.get(),
    queryId,
    queryNameLength,
    queryName,
    dataSize,
    noCounters,
    noInstances,
    capsMask,
  )
}

///|
let d_glGetPixelMapfv : Dispatch = Dispatch::new("glGetPixelMapfv")

///|
#borrow(values)
extern "c" fn epoxy_glGetPixelMapfv(
  fp : CPtr,
  map : UInt,
  values : FixedArray[Float],
) -> Unit = "epoxy_glGetPixelMapfv"

///|
pub fn gl_get_pixel_mapfv(map : UInt, values : FixedArray[Float]) -> Unit {
  epoxy_glGetPixelMapfv(d_glGetPixelMapfv.get(), map, values)
}

///|
let d_glGetPixelMapuiv : Dispatch = Dispatch::new("glGetPixelMapuiv")

///|
#borrow(values)
extern "c" fn epoxy_glGetPixelMapuiv(
  fp : CPtr,
  map : UInt,
  values : FixedArray[UInt],
) -> Unit = "epoxy_glGetPixelMapuiv"

///|
pub fn gl_get_pixel_mapuiv(map : UInt, values : FixedArray[UInt]) -> Unit {
  epoxy_glGetPixelMapuiv(d_glGetPixelMapuiv.get(), map, values)
}

///|
let d_glGetPixelMapusv : Dispatch = Dispatch::new("glGetPixelMapusv")

///|
#borrow(values)
extern "c" fn epoxy_glGetPixelMapusv(
  fp : CPtr,
  map : UInt,
  values : FixedArray[UInt16],
) -> Unit = "epoxy_glGetPixelMapusv"

///|
pub fn gl_get_pixel_mapusv(map : UInt, values : FixedArray[UInt16]) -> Unit {
  epoxy_glGetPixelMapusv(d_glGetPixelMapusv.get(), map, values)
}

///|
let d_glGetPixelMapxv : Dispatch = Dispatch::new("glGetPixelMapxv")

///|
#borrow(values)
extern "c" fn epoxy_glGetPixelMapxv(
  fp : CPtr,
  map : UInt,
  size : Int,
  values : FixedArray[Int],
) -> Unit = "epoxy_glGetPixelMapxv"

///|
pub fn gl_get_pixel_mapxv(
  map : UInt,
  size : Int,
  values : FixedArray[Int],
) -> Unit {
  epoxy_glGetPixelMapxv(d_glGetPixelMapxv.get(), map, size, values)
}

///|
let d_glGetPixelTexGenParameterfvSGIS : Dispatch = Dispatch::new(
  "glGetPixelTexGenParameterfvSGIS",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetPixelTexGenParameterfvSGIS(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetPixelTexGenParameterfvSGIS"

///|
pub fn gl_get_pixel_tex_gen_parameterfv_sgis(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetPixelTexGenParameterfvSGIS(
    d_glGetPixelTexGenParameterfvSGIS.get(),
    pname,
    params,
  )
}

///|
let d_glGetPixelTexGenParameterivSGIS : Dispatch = Dispatch::new(
  "glGetPixelTexGenParameterivSGIS",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetPixelTexGenParameterivSGIS(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetPixelTexGenParameterivSGIS"

///|
pub fn gl_get_pixel_tex_gen_parameteriv_sgis(
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetPixelTexGenParameterivSGIS(
    d_glGetPixelTexGenParameterivSGIS.get(),
    pname,
    params,
  )
}

///|
let d_glGetPixelTransformParameterfvEXT : Dispatch = Dispatch::new(
  "glGetPixelTransformParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetPixelTransformParameterfvEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetPixelTransformParameterfvEXT"

///|
pub fn gl_get_pixel_transform_parameterfv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetPixelTransformParameterfvEXT(
    d_glGetPixelTransformParameterfvEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetPixelTransformParameterivEXT : Dispatch = Dispatch::new(
  "glGetPixelTransformParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetPixelTransformParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetPixelTransformParameterivEXT"

///|
pub fn gl_get_pixel_transform_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetPixelTransformParameterivEXT(
    d_glGetPixelTransformParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetPolygonStipple : Dispatch = Dispatch::new("glGetPolygonStipple")

///|
#borrow(mask)
extern "c" fn epoxy_glGetPolygonStipple(fp : CPtr, mask : Bytes) -> Unit = "epoxy_glGetPolygonStipple"

///|
pub fn gl_get_polygon_stipple(mask : Bytes) -> Unit {
  epoxy_glGetPolygonStipple(d_glGetPolygonStipple.get(), mask)
}

///|
let d_glGetProgramBinary : Dispatch = Dispatch::with_aliases(
  "glGetProgramBinary",
  ["glGetProgramBinaryOES"],
)

///|
#borrow(length, binaryFormat, binary)
extern "c" fn epoxy_glGetProgramBinary(
  fp : CPtr,
  program : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  binaryFormat : FixedArray[UInt],
  binary : Bytes,
) -> Unit = "epoxy_glGetProgramBinary"

///|
pub fn gl_get_program_binary(
  program : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  binaryFormat : FixedArray[UInt],
  binary : Bytes,
) -> Unit {
  epoxy_glGetProgramBinary(
    d_glGetProgramBinary.get(),
    program,
    bufSize,
    length,
    binaryFormat,
    binary,
  )
}

///|
let d_glGetProgramBinaryOES : Dispatch = Dispatch::with_aliases(
  "glGetProgramBinaryOES",
  ["glGetProgramBinary"],
)

///|
#borrow(length, binaryFormat, binary)
extern "c" fn epoxy_glGetProgramBinaryOES(
  fp : CPtr,
  program : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  binaryFormat : FixedArray[UInt],
  binary : Bytes,
) -> Unit = "epoxy_glGetProgramBinaryOES"

///|
pub fn gl_get_program_binary_oes(
  program : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  binaryFormat : FixedArray[UInt],
  binary : Bytes,
) -> Unit {
  epoxy_glGetProgramBinaryOES(
    d_glGetProgramBinaryOES.get(),
    program,
    bufSize,
    length,
    binaryFormat,
    binary,
  )
}

///|
let d_glGetProgramEnvParameterIivNV : Dispatch = Dispatch::new(
  "glGetProgramEnvParameterIivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramEnvParameterIivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramEnvParameterIivNV"

///|
pub fn gl_get_program_env_parameter_iiv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramEnvParameterIivNV(
    d_glGetProgramEnvParameterIivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramEnvParameterIuivNV : Dispatch = Dispatch::new(
  "glGetProgramEnvParameterIuivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramEnvParameterIuivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetProgramEnvParameterIuivNV"

///|
pub fn gl_get_program_env_parameter_iuiv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetProgramEnvParameterIuivNV(
    d_glGetProgramEnvParameterIuivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramEnvParameterdvARB : Dispatch = Dispatch::new(
  "glGetProgramEnvParameterdvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramEnvParameterdvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetProgramEnvParameterdvARB"

///|
pub fn gl_get_program_env_parameterdv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetProgramEnvParameterdvARB(
    d_glGetProgramEnvParameterdvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramEnvParameterfvARB : Dispatch = Dispatch::new(
  "glGetProgramEnvParameterfvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramEnvParameterfvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetProgramEnvParameterfvARB"

///|
pub fn gl_get_program_env_parameterfv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetProgramEnvParameterfvARB(
    d_glGetProgramEnvParameterfvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramInfoLog : Dispatch = Dispatch::new("glGetProgramInfoLog")

///|
#borrow(length, infoLog)
extern "c" fn epoxy_glGetProgramInfoLog(
  fp : CPtr,
  program : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit = "epoxy_glGetProgramInfoLog"

///|
pub fn gl_get_program_info_log(
  program : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit {
  epoxy_glGetProgramInfoLog(
    d_glGetProgramInfoLog.get(),
    program,
    bufSize,
    length,
    infoLog,
  )
}

///|
let d_glGetProgramInterfaceiv : Dispatch = Dispatch::new(
  "glGetProgramInterfaceiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramInterfaceiv(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramInterfaceiv"

///|
pub fn gl_get_program_interfaceiv(
  program : UInt,
  programInterface : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramInterfaceiv(
    d_glGetProgramInterfaceiv.get(),
    program,
    programInterface,
    pname,
    params,
  )
}

///|
let d_glGetProgramLocalParameterIivNV : Dispatch = Dispatch::new(
  "glGetProgramLocalParameterIivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramLocalParameterIivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramLocalParameterIivNV"

///|
pub fn gl_get_program_local_parameter_iiv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramLocalParameterIivNV(
    d_glGetProgramLocalParameterIivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramLocalParameterIuivNV : Dispatch = Dispatch::new(
  "glGetProgramLocalParameterIuivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramLocalParameterIuivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetProgramLocalParameterIuivNV"

///|
pub fn gl_get_program_local_parameter_iuiv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetProgramLocalParameterIuivNV(
    d_glGetProgramLocalParameterIuivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramLocalParameterdvARB : Dispatch = Dispatch::new(
  "glGetProgramLocalParameterdvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramLocalParameterdvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetProgramLocalParameterdvARB"

///|
pub fn gl_get_program_local_parameterdv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetProgramLocalParameterdvARB(
    d_glGetProgramLocalParameterdvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramLocalParameterfvARB : Dispatch = Dispatch::new(
  "glGetProgramLocalParameterfvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramLocalParameterfvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetProgramLocalParameterfvARB"

///|
pub fn gl_get_program_local_parameterfv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetProgramLocalParameterfvARB(
    d_glGetProgramLocalParameterfvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glGetProgramNamedParameterdvNV : Dispatch = Dispatch::new(
  "glGetProgramNamedParameterdvNV",
)

///|
#borrow(name, params)
extern "c" fn epoxy_glGetProgramNamedParameterdvNV(
  fp : CPtr,
  id : UInt,
  len : Int,
  name : Bytes,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetProgramNamedParameterdvNV"

///|
pub fn gl_get_program_named_parameterdv_nv(
  id : UInt,
  len : Int,
  name : Bytes,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetProgramNamedParameterdvNV(
    d_glGetProgramNamedParameterdvNV.get(),
    id,
    len,
    name,
    params,
  )
}

///|
let d_glGetProgramNamedParameterfvNV : Dispatch = Dispatch::new(
  "glGetProgramNamedParameterfvNV",
)

///|
#borrow(name, params)
extern "c" fn epoxy_glGetProgramNamedParameterfvNV(
  fp : CPtr,
  id : UInt,
  len : Int,
  name : Bytes,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetProgramNamedParameterfvNV"

///|
pub fn gl_get_program_named_parameterfv_nv(
  id : UInt,
  len : Int,
  name : Bytes,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetProgramNamedParameterfvNV(
    d_glGetProgramNamedParameterfvNV.get(),
    id,
    len,
    name,
    params,
  )
}

///|
let d_glGetProgramParameterdvNV : Dispatch = Dispatch::new(
  "glGetProgramParameterdvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramParameterdvNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetProgramParameterdvNV"

///|
pub fn gl_get_program_parameterdv_nv(
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetProgramParameterdvNV(
    d_glGetProgramParameterdvNV.get(),
    target,
    index,
    pname,
    params,
  )
}

///|
let d_glGetProgramParameterfvNV : Dispatch = Dispatch::new(
  "glGetProgramParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramParameterfvNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetProgramParameterfvNV"

///|
pub fn gl_get_program_parameterfv_nv(
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetProgramParameterfvNV(
    d_glGetProgramParameterfvNV.get(),
    target,
    index,
    pname,
    params,
  )
}

///|
let d_glGetProgramPipelineInfoLog : Dispatch = Dispatch::new(
  "glGetProgramPipelineInfoLog",
)

///|
#borrow(length, infoLog)
extern "c" fn epoxy_glGetProgramPipelineInfoLog(
  fp : CPtr,
  pipeline : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit = "epoxy_glGetProgramPipelineInfoLog"

///|
pub fn gl_get_program_pipeline_info_log(
  pipeline : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit {
  epoxy_glGetProgramPipelineInfoLog(
    d_glGetProgramPipelineInfoLog.get(),
    pipeline,
    bufSize,
    length,
    infoLog,
  )
}

///|
let d_glGetProgramPipelineInfoLogEXT : Dispatch = Dispatch::new(
  "glGetProgramPipelineInfoLogEXT",
)

///|
#borrow(length, infoLog)
extern "c" fn epoxy_glGetProgramPipelineInfoLogEXT(
  fp : CPtr,
  pipeline : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit = "epoxy_glGetProgramPipelineInfoLogEXT"

///|
pub fn gl_get_program_pipeline_info_log_ext(
  pipeline : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit {
  epoxy_glGetProgramPipelineInfoLogEXT(
    d_glGetProgramPipelineInfoLogEXT.get(),
    pipeline,
    bufSize,
    length,
    infoLog,
  )
}

///|
let d_glGetProgramPipelineiv : Dispatch = Dispatch::new(
  "glGetProgramPipelineiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramPipelineiv(
  fp : CPtr,
  pipeline : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramPipelineiv"

///|
pub fn gl_get_program_pipelineiv(
  pipeline : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramPipelineiv(
    d_glGetProgramPipelineiv.get(),
    pipeline,
    pname,
    params,
  )
}

///|
let d_glGetProgramPipelineivEXT : Dispatch = Dispatch::new(
  "glGetProgramPipelineivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramPipelineivEXT(
  fp : CPtr,
  pipeline : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramPipelineivEXT"

///|
pub fn gl_get_program_pipelineiv_ext(
  pipeline : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramPipelineivEXT(
    d_glGetProgramPipelineivEXT.get(),
    pipeline,
    pname,
    params,
  )
}

///|
let d_glGetProgramResourceIndex : Dispatch = Dispatch::new(
  "glGetProgramResourceIndex",
)

///|
#borrow(name)
extern "c" fn epoxy_glGetProgramResourceIndex(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> UInt = "epoxy_glGetProgramResourceIndex"

///|
pub fn gl_get_program_resource_index(
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> UInt {
  epoxy_glGetProgramResourceIndex(
    d_glGetProgramResourceIndex.get(),
    program,
    programInterface,
    name,
  )
}

///|
let d_glGetProgramResourceLocation : Dispatch = Dispatch::new(
  "glGetProgramResourceLocation",
)

///|
#borrow(name)
extern "c" fn epoxy_glGetProgramResourceLocation(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetProgramResourceLocation"

///|
pub fn gl_get_program_resource_location(
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> Int {
  epoxy_glGetProgramResourceLocation(
    d_glGetProgramResourceLocation.get(),
    program,
    programInterface,
    name,
  )
}

///|
let d_glGetProgramResourceLocationIndex : Dispatch = Dispatch::new(
  "glGetProgramResourceLocationIndex",
)

///|
#borrow(name)
extern "c" fn epoxy_glGetProgramResourceLocationIndex(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetProgramResourceLocationIndex"

///|
pub fn gl_get_program_resource_location_index(
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> Int {
  epoxy_glGetProgramResourceLocationIndex(
    d_glGetProgramResourceLocationIndex.get(),
    program,
    programInterface,
    name,
  )
}

///|
let d_glGetProgramResourceLocationIndexEXT : Dispatch = Dispatch::new(
  "glGetProgramResourceLocationIndexEXT",
)

///|
#borrow(name)
extern "c" fn epoxy_glGetProgramResourceLocationIndexEXT(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetProgramResourceLocationIndexEXT"

///|
pub fn gl_get_program_resource_location_index_ext(
  program : UInt,
  programInterface : UInt,
  name : Bytes,
) -> Int {
  epoxy_glGetProgramResourceLocationIndexEXT(
    d_glGetProgramResourceLocationIndexEXT.get(),
    program,
    programInterface,
    name,
  )
}

///|
let d_glGetProgramResourceName : Dispatch = Dispatch::new(
  "glGetProgramResourceName",
)

///|
#borrow(length, name)
extern "c" fn epoxy_glGetProgramResourceName(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  name : Bytes,
) -> Unit = "epoxy_glGetProgramResourceName"

///|
pub fn gl_get_program_resource_name(
  program : UInt,
  programInterface : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  name : Bytes,
) -> Unit {
  epoxy_glGetProgramResourceName(
    d_glGetProgramResourceName.get(),
    program,
    programInterface,
    index,
    bufSize,
    length,
    name,
  )
}

///|
let d_glGetProgramResourcefvNV : Dispatch = Dispatch::new(
  "glGetProgramResourcefvNV",
)

///|
#borrow(props, length, params)
extern "c" fn epoxy_glGetProgramResourcefvNV(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  index : UInt,
  propCount : Int,
  props : FixedArray[UInt],
  count : Int,
  length : FixedArray[Int],
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetProgramResourcefvNV"

///|
pub fn gl_get_program_resourcefv_nv(
  program : UInt,
  programInterface : UInt,
  index : UInt,
  propCount : Int,
  props : FixedArray[UInt],
  count : Int,
  length : FixedArray[Int],
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetProgramResourcefvNV(
    d_glGetProgramResourcefvNV.get(),
    program,
    programInterface,
    index,
    propCount,
    props,
    count,
    length,
    params,
  )
}

///|
let d_glGetProgramResourceiv : Dispatch = Dispatch::new(
  "glGetProgramResourceiv",
)

///|
#borrow(props, length, params)
extern "c" fn epoxy_glGetProgramResourceiv(
  fp : CPtr,
  program : UInt,
  programInterface : UInt,
  index : UInt,
  propCount : Int,
  props : FixedArray[UInt],
  count : Int,
  length : FixedArray[Int],
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramResourceiv"

///|
pub fn gl_get_program_resourceiv(
  program : UInt,
  programInterface : UInt,
  index : UInt,
  propCount : Int,
  props : FixedArray[UInt],
  count : Int,
  length : FixedArray[Int],
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramResourceiv(
    d_glGetProgramResourceiv.get(),
    program,
    programInterface,
    index,
    propCount,
    props,
    count,
    length,
    params,
  )
}

///|
let d_glGetProgramStageiv : Dispatch = Dispatch::new("glGetProgramStageiv")

///|
#borrow(values)
extern "c" fn epoxy_glGetProgramStageiv(
  fp : CPtr,
  program : UInt,
  shadertype : UInt,
  pname : UInt,
  values : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramStageiv"

///|
pub fn gl_get_program_stageiv(
  program : UInt,
  shadertype : UInt,
  pname : UInt,
  values : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramStageiv(
    d_glGetProgramStageiv.get(),
    program,
    shadertype,
    pname,
    values,
  )
}

///|
let d_glGetProgramStringARB : Dispatch = Dispatch::new("glGetProgramStringARB")

///|
#borrow(string)
extern "c" fn epoxy_glGetProgramStringARB(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  string : Bytes,
) -> Unit = "epoxy_glGetProgramStringARB"

///|
pub fn gl_get_program_string_arb(
  target : UInt,
  pname : UInt,
  string : Bytes,
) -> Unit {
  epoxy_glGetProgramStringARB(
    d_glGetProgramStringARB.get(),
    target,
    pname,
    string,
  )
}

///|
let d_glGetProgramStringNV : Dispatch = Dispatch::new("glGetProgramStringNV")

///|
#borrow(program)
extern "c" fn epoxy_glGetProgramStringNV(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  program : Bytes,
) -> Unit = "epoxy_glGetProgramStringNV"

///|
pub fn gl_get_program_string_nv(
  id : UInt,
  pname : UInt,
  program : Bytes,
) -> Unit {
  epoxy_glGetProgramStringNV(d_glGetProgramStringNV.get(), id, pname, program)
}

///|
let d_glGetProgramSubroutineParameteruivNV : Dispatch = Dispatch::new(
  "glGetProgramSubroutineParameteruivNV",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetProgramSubroutineParameteruivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  param : FixedArray[UInt],
) -> Unit = "epoxy_glGetProgramSubroutineParameteruivNV"

///|
pub fn gl_get_program_subroutine_parameteruiv_nv(
  target : UInt,
  index : UInt,
  param : FixedArray[UInt],
) -> Unit {
  epoxy_glGetProgramSubroutineParameteruivNV(
    d_glGetProgramSubroutineParameteruivNV.get(),
    target,
    index,
    param,
  )
}

///|
let d_glGetProgramiv : Dispatch = Dispatch::new("glGetProgramiv")

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramiv(
  fp : CPtr,
  program : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramiv"

///|
pub fn gl_get_programiv(
  program : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramiv(d_glGetProgramiv.get(), program, pname, params)
}

///|
let d_glGetProgramivARB : Dispatch = Dispatch::new("glGetProgramivARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramivARB(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramivARB"

///|
pub fn gl_get_programiv_arb(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramivARB(d_glGetProgramivARB.get(), target, pname, params)
}

///|
let d_glGetProgramivNV : Dispatch = Dispatch::new("glGetProgramivNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetProgramivNV(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetProgramivNV"

///|
pub fn gl_get_programiv_nv(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetProgramivNV(d_glGetProgramivNV.get(), id, pname, params)
}

///|
let d_glGetQueryBufferObjecti64v : Dispatch = Dispatch::new(
  "glGetQueryBufferObjecti64v",
)

///|
extern "c" fn epoxy_glGetQueryBufferObjecti64v(
  fp : CPtr,
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit = "epoxy_glGetQueryBufferObjecti64v"

///|
pub fn gl_get_query_buffer_objecti64v(
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit {
  epoxy_glGetQueryBufferObjecti64v(
    d_glGetQueryBufferObjecti64v.get(),
    id,
    buffer,
    pname,
    offset,
  )
}

///|
let d_glGetQueryBufferObjectiv : Dispatch = Dispatch::new(
  "glGetQueryBufferObjectiv",
)

///|
extern "c" fn epoxy_glGetQueryBufferObjectiv(
  fp : CPtr,
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit = "epoxy_glGetQueryBufferObjectiv"

///|
pub fn gl_get_query_buffer_objectiv(
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit {
  epoxy_glGetQueryBufferObjectiv(
    d_glGetQueryBufferObjectiv.get(),
    id,
    buffer,
    pname,
    offset,
  )
}

///|
let d_glGetQueryBufferObjectui64v : Dispatch = Dispatch::new(
  "glGetQueryBufferObjectui64v",
)

///|
extern "c" fn epoxy_glGetQueryBufferObjectui64v(
  fp : CPtr,
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit = "epoxy_glGetQueryBufferObjectui64v"

///|
pub fn gl_get_query_buffer_objectui64v(
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit {
  epoxy_glGetQueryBufferObjectui64v(
    d_glGetQueryBufferObjectui64v.get(),
    id,
    buffer,
    pname,
    offset,
  )
}

///|
let d_glGetQueryBufferObjectuiv : Dispatch = Dispatch::new(
  "glGetQueryBufferObjectuiv",
)

///|
extern "c" fn epoxy_glGetQueryBufferObjectuiv(
  fp : CPtr,
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit = "epoxy_glGetQueryBufferObjectuiv"

///|
pub fn gl_get_query_buffer_objectuiv(
  id : UInt,
  buffer : UInt,
  pname : UInt,
  offset : Int64,
) -> Unit {
  epoxy_glGetQueryBufferObjectuiv(
    d_glGetQueryBufferObjectuiv.get(),
    id,
    buffer,
    pname,
    offset,
  )
}

///|
let d_glGetQueryIndexediv : Dispatch = Dispatch::new("glGetQueryIndexediv")

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryIndexediv(
  fp : CPtr,
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetQueryIndexediv"

///|
pub fn gl_get_query_indexediv(
  target : UInt,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetQueryIndexediv(
    d_glGetQueryIndexediv.get(),
    target,
    index,
    pname,
    params,
  )
}

///|
let d_glGetQueryObjecti64v : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjecti64v",
  ["glGetQueryObjecti64vEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjecti64v(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetQueryObjecti64v"

///|
pub fn gl_get_query_objecti64v(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetQueryObjecti64v(d_glGetQueryObjecti64v.get(), id, pname, params)
}

///|
let d_glGetQueryObjecti64vEXT : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjecti64vEXT",
  ["glGetQueryObjecti64v"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjecti64vEXT(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetQueryObjecti64vEXT"

///|
pub fn gl_get_query_objecti64v_ext(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetQueryObjecti64vEXT(
    d_glGetQueryObjecti64vEXT.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetQueryObjectiv : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjectiv",
  ["glGetQueryObjectivARB", "glGetQueryObjectivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectiv(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetQueryObjectiv"

///|
pub fn gl_get_query_objectiv(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetQueryObjectiv(d_glGetQueryObjectiv.get(), id, pname, params)
}

///|
let d_glGetQueryObjectivARB : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjectivARB",
  ["glGetQueryObjectiv", "glGetQueryObjectivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectivARB(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetQueryObjectivARB"

///|
pub fn gl_get_query_objectiv_arb(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetQueryObjectivARB(d_glGetQueryObjectivARB.get(), id, pname, params)
}

///|
let d_glGetQueryObjectivEXT : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjectivEXT",
  ["glGetQueryObjectiv", "glGetQueryObjectivARB"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectivEXT(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetQueryObjectivEXT"

///|
pub fn gl_get_query_objectiv_ext(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetQueryObjectivEXT(d_glGetQueryObjectivEXT.get(), id, pname, params)
}

///|
let d_glGetQueryObjectui64v : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjectui64v",
  ["glGetQueryObjectui64vEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectui64v(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetQueryObjectui64v"

///|
pub fn gl_get_query_objectui64v(
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetQueryObjectui64v(d_glGetQueryObjectui64v.get(), id, pname, params)
}

///|
let d_glGetQueryObjectui64vEXT : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjectui64vEXT",
  ["glGetQueryObjectui64v"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectui64vEXT(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetQueryObjectui64vEXT"

///|
pub fn gl_get_query_objectui64v_ext(
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetQueryObjectui64vEXT(
    d_glGetQueryObjectui64vEXT.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetQueryObjectuiv : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjectuiv",
  ["glGetQueryObjectuivARB"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectuiv(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetQueryObjectuiv"

///|
pub fn gl_get_query_objectuiv(
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetQueryObjectuiv(d_glGetQueryObjectuiv.get(), id, pname, params)
}

///|
let d_glGetQueryObjectuivARB : Dispatch = Dispatch::with_aliases(
  "glGetQueryObjectuivARB",
  ["glGetQueryObjectuiv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectuivARB(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetQueryObjectuivARB"

///|
pub fn gl_get_query_objectuiv_arb(
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetQueryObjectuivARB(
    d_glGetQueryObjectuivARB.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetQueryObjectuivEXT : Dispatch = Dispatch::new(
  "glGetQueryObjectuivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryObjectuivEXT(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetQueryObjectuivEXT"

///|
pub fn gl_get_query_objectuiv_ext(
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetQueryObjectuivEXT(
    d_glGetQueryObjectuivEXT.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetQueryiv : Dispatch = Dispatch::with_aliases("glGetQueryiv", [
  "glGetQueryivARB",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryiv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetQueryiv"

///|
pub fn gl_get_queryiv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetQueryiv(d_glGetQueryiv.get(), target, pname, params)
}

///|
let d_glGetQueryivARB : Dispatch = Dispatch::with_aliases("glGetQueryivARB", [
  "glGetQueryiv",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryivARB(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetQueryivARB"

///|
pub fn gl_get_queryiv_arb(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetQueryivARB(d_glGetQueryivARB.get(), target, pname, params)
}

///|
let d_glGetQueryivEXT : Dispatch = Dispatch::new("glGetQueryivEXT")

///|
#borrow(params)
extern "c" fn epoxy_glGetQueryivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetQueryivEXT"

///|
pub fn gl_get_queryiv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetQueryivEXT(d_glGetQueryivEXT.get(), target, pname, params)
}

///|
let d_glGetRenderbufferParameteriv : Dispatch = Dispatch::with_aliases(
  "glGetRenderbufferParameteriv",
  ["glGetRenderbufferParameterivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetRenderbufferParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetRenderbufferParameteriv"

///|
pub fn gl_get_renderbuffer_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetRenderbufferParameteriv(
    d_glGetRenderbufferParameteriv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetRenderbufferParameterivEXT : Dispatch = Dispatch::with_aliases(
  "glGetRenderbufferParameterivEXT",
  ["glGetRenderbufferParameteriv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetRenderbufferParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetRenderbufferParameterivEXT"

///|
pub fn gl_get_renderbuffer_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetRenderbufferParameterivEXT(
    d_glGetRenderbufferParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetRenderbufferParameterivOES : Dispatch = Dispatch::new(
  "glGetRenderbufferParameterivOES",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetRenderbufferParameterivOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetRenderbufferParameterivOES"

///|
pub fn gl_get_renderbuffer_parameteriv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetRenderbufferParameterivOES(
    d_glGetRenderbufferParameterivOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameterIiv : Dispatch = Dispatch::with_aliases(
  "glGetSamplerParameterIiv",
  ["glGetSamplerParameterIivEXT", "glGetSamplerParameterIivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameterIiv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetSamplerParameterIiv"

///|
pub fn gl_get_sampler_parameter_iiv(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetSamplerParameterIiv(
    d_glGetSamplerParameterIiv.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameterIivEXT : Dispatch = Dispatch::with_aliases(
  "glGetSamplerParameterIivEXT",
  ["glGetSamplerParameterIiv", "glGetSamplerParameterIivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameterIivEXT(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetSamplerParameterIivEXT"

///|
pub fn gl_get_sampler_parameter_iiv_ext(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetSamplerParameterIivEXT(
    d_glGetSamplerParameterIivEXT.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameterIivOES : Dispatch = Dispatch::with_aliases(
  "glGetSamplerParameterIivOES",
  ["glGetSamplerParameterIiv", "glGetSamplerParameterIivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameterIivOES(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetSamplerParameterIivOES"

///|
pub fn gl_get_sampler_parameter_iiv_oes(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetSamplerParameterIivOES(
    d_glGetSamplerParameterIivOES.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameterIuiv : Dispatch = Dispatch::with_aliases(
  "glGetSamplerParameterIuiv",
  ["glGetSamplerParameterIuivEXT", "glGetSamplerParameterIuivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameterIuiv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetSamplerParameterIuiv"

///|
pub fn gl_get_sampler_parameter_iuiv(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetSamplerParameterIuiv(
    d_glGetSamplerParameterIuiv.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameterIuivEXT : Dispatch = Dispatch::with_aliases(
  "glGetSamplerParameterIuivEXT",
  ["glGetSamplerParameterIuiv", "glGetSamplerParameterIuivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameterIuivEXT(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetSamplerParameterIuivEXT"

///|
pub fn gl_get_sampler_parameter_iuiv_ext(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetSamplerParameterIuivEXT(
    d_glGetSamplerParameterIuivEXT.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameterIuivOES : Dispatch = Dispatch::with_aliases(
  "glGetSamplerParameterIuivOES",
  ["glGetSamplerParameterIuiv", "glGetSamplerParameterIuivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameterIuivOES(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetSamplerParameterIuivOES"

///|
pub fn gl_get_sampler_parameter_iuiv_oes(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetSamplerParameterIuivOES(
    d_glGetSamplerParameterIuivOES.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameterfv : Dispatch = Dispatch::new(
  "glGetSamplerParameterfv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameterfv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetSamplerParameterfv"

///|
pub fn gl_get_sampler_parameterfv(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetSamplerParameterfv(
    d_glGetSamplerParameterfv.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSamplerParameteriv : Dispatch = Dispatch::new(
  "glGetSamplerParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSamplerParameteriv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetSamplerParameteriv"

///|
pub fn gl_get_sampler_parameteriv(
  sampler : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetSamplerParameteriv(
    d_glGetSamplerParameteriv.get(),
    sampler,
    pname,
    params,
  )
}

///|
let d_glGetSemaphoreParameterivNV : Dispatch = Dispatch::new(
  "glGetSemaphoreParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSemaphoreParameterivNV(
  fp : CPtr,
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetSemaphoreParameterivNV"

///|
pub fn gl_get_semaphore_parameteriv_nv(
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetSemaphoreParameterivNV(
    d_glGetSemaphoreParameterivNV.get(),
    semaphore,
    pname,
    params,
  )
}

///|
let d_glGetSemaphoreParameterui64vEXT : Dispatch = Dispatch::new(
  "glGetSemaphoreParameterui64vEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetSemaphoreParameterui64vEXT(
  fp : CPtr,
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetSemaphoreParameterui64vEXT"

///|
pub fn gl_get_semaphore_parameterui64v_ext(
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetSemaphoreParameterui64vEXT(
    d_glGetSemaphoreParameterui64vEXT.get(),
    semaphore,
    pname,
    params,
  )
}

///|
let d_glGetSeparableFilter : Dispatch = Dispatch::new("glGetSeparableFilter")

///|
#borrow(row, column, span)
extern "c" fn epoxy_glGetSeparableFilter(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
  span : Bytes,
) -> Unit = "epoxy_glGetSeparableFilter"

///|
pub fn gl_get_separable_filter(
  target : UInt,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
  span : Bytes,
) -> Unit {
  epoxy_glGetSeparableFilter(
    d_glGetSeparableFilter.get(),
    target,
    format,
    type_,
    row,
    column,
    span,
  )
}

///|
let d_glGetSeparableFilterEXT : Dispatch = Dispatch::new(
  "glGetSeparableFilterEXT",
)

///|
#borrow(row, column, span)
extern "c" fn epoxy_glGetSeparableFilterEXT(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
  span : Bytes,
) -> Unit = "epoxy_glGetSeparableFilterEXT"

///|
pub fn gl_get_separable_filter_ext(
  target : UInt,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
  span : Bytes,
) -> Unit {
  epoxy_glGetSeparableFilterEXT(
    d_glGetSeparableFilterEXT.get(),
    target,
    format,
    type_,
    row,
    column,
    span,
  )
}

///|
let d_glGetShaderInfoLog : Dispatch = Dispatch::new("glGetShaderInfoLog")

///|
#borrow(length, infoLog)
extern "c" fn epoxy_glGetShaderInfoLog(
  fp : CPtr,
  shader : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit = "epoxy_glGetShaderInfoLog"

///|
pub fn gl_get_shader_info_log(
  shader : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  infoLog : Bytes,
) -> Unit {
  epoxy_glGetShaderInfoLog(
    d_glGetShaderInfoLog.get(),
    shader,
    bufSize,
    length,
    infoLog,
  )
}

///|
let d_glGetShaderPrecisionFormat : Dispatch = Dispatch::new(
  "glGetShaderPrecisionFormat",
)

///|
#borrow(range, precision)
extern "c" fn epoxy_glGetShaderPrecisionFormat(
  fp : CPtr,
  shadertype : UInt,
  precisiontype : UInt,
  range : FixedArray[Int],
  precision : FixedArray[Int],
) -> Unit = "epoxy_glGetShaderPrecisionFormat"

///|
pub fn gl_get_shader_precision_format(
  shadertype : UInt,
  precisiontype : UInt,
  range : FixedArray[Int],
  precision : FixedArray[Int],
) -> Unit {
  epoxy_glGetShaderPrecisionFormat(
    d_glGetShaderPrecisionFormat.get(),
    shadertype,
    precisiontype,
    range,
    precision,
  )
}

///|
let d_glGetShaderSource : Dispatch = Dispatch::with_aliases(
  "glGetShaderSource",
  ["glGetShaderSourceARB"],
)

///|
#borrow(length, source)
extern "c" fn epoxy_glGetShaderSource(
  fp : CPtr,
  shader : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  source : Bytes,
) -> Unit = "epoxy_glGetShaderSource"

///|
pub fn gl_get_shader_source(
  shader : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  source : Bytes,
) -> Unit {
  epoxy_glGetShaderSource(
    d_glGetShaderSource.get(),
    shader,
    bufSize,
    length,
    source,
  )
}

///|
let d_glGetShaderiv : Dispatch = Dispatch::new("glGetShaderiv")

///|
#borrow(params)
extern "c" fn epoxy_glGetShaderiv(
  fp : CPtr,
  shader : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetShaderiv"

///|
pub fn gl_get_shaderiv(
  shader : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetShaderiv(d_glGetShaderiv.get(), shader, pname, params)
}

///|
let d_glGetShadingRateImagePaletteNV : Dispatch = Dispatch::new(
  "glGetShadingRateImagePaletteNV",
)

///|
#borrow(rate)
extern "c" fn epoxy_glGetShadingRateImagePaletteNV(
  fp : CPtr,
  viewport : UInt,
  entry : UInt,
  rate : FixedArray[UInt],
) -> Unit = "epoxy_glGetShadingRateImagePaletteNV"

///|
pub fn gl_get_shading_rate_image_palette_nv(
  viewport : UInt,
  entry : UInt,
  rate : FixedArray[UInt],
) -> Unit {
  epoxy_glGetShadingRateImagePaletteNV(
    d_glGetShadingRateImagePaletteNV.get(),
    viewport,
    entry,
    rate,
  )
}

///|
let d_glGetShadingRateSampleLocationivNV : Dispatch = Dispatch::new(
  "glGetShadingRateSampleLocationivNV",
)

///|
#borrow(location)
extern "c" fn epoxy_glGetShadingRateSampleLocationivNV(
  fp : CPtr,
  rate : UInt,
  samples : UInt,
  index : UInt,
  location : FixedArray[Int],
) -> Unit = "epoxy_glGetShadingRateSampleLocationivNV"

///|
pub fn gl_get_shading_rate_sample_locationiv_nv(
  rate : UInt,
  samples : UInt,
  index : UInt,
  location : FixedArray[Int],
) -> Unit {
  epoxy_glGetShadingRateSampleLocationivNV(
    d_glGetShadingRateSampleLocationivNV.get(),
    rate,
    samples,
    index,
    location,
  )
}

///|
let d_glGetSharpenTexFuncSGIS : Dispatch = Dispatch::new(
  "glGetSharpenTexFuncSGIS",
)

///|
#borrow(points)
extern "c" fn epoxy_glGetSharpenTexFuncSGIS(
  fp : CPtr,
  target : UInt,
  points : FixedArray[Float],
) -> Unit = "epoxy_glGetSharpenTexFuncSGIS"

///|
pub fn gl_get_sharpen_tex_func_sgis(
  target : UInt,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glGetSharpenTexFuncSGIS(d_glGetSharpenTexFuncSGIS.get(), target, points)
}

///|
let d_glGetStageIndexNV : Dispatch = Dispatch::new("glGetStageIndexNV")

///|
extern "c" fn epoxy_glGetStageIndexNV(fp : CPtr, shadertype : UInt) -> Int = "epoxy_glGetStageIndexNV"

///|
pub fn gl_get_stage_index_nv(shadertype : UInt) -> Int {
  epoxy_glGetStageIndexNV(d_glGetStageIndexNV.get(), shadertype)
}

///|
let d_glGetString : Dispatch = Dispatch::new("glGetString")

///|
extern "c" fn epoxy_glGetString(fp : CPtr, name : UInt) -> Bytes = "epoxy_glGetString"

///|
pub fn gl_get_string(name : UInt) -> String {
  @utf8.decode_lossy(epoxy_glGetString(d_glGetString.get(), name)[:])
}

///|
let d_glGetStringi : Dispatch = Dispatch::new("glGetStringi")

///|
extern "c" fn epoxy_glGetStringi(fp : CPtr, name : UInt, index : UInt) -> Bytes = "epoxy_glGetStringi"

///|
pub fn gl_get_stringi(name : UInt, index : UInt) -> String {
  @utf8.decode_lossy(epoxy_glGetStringi(d_glGetStringi.get(), name, index)[:])
}

///|
let d_glGetSubroutineIndex : Dispatch = Dispatch::new("glGetSubroutineIndex")

///|
#borrow(name)
extern "c" fn epoxy_glGetSubroutineIndex(
  fp : CPtr,
  program : UInt,
  shadertype : UInt,
  name : Bytes,
) -> UInt = "epoxy_glGetSubroutineIndex"

///|
pub fn gl_get_subroutine_index(
  program : UInt,
  shadertype : UInt,
  name : Bytes,
) -> UInt {
  epoxy_glGetSubroutineIndex(
    d_glGetSubroutineIndex.get(),
    program,
    shadertype,
    name,
  )
}

///|
let d_glGetSubroutineUniformLocation : Dispatch = Dispatch::new(
  "glGetSubroutineUniformLocation",
)

///|
#borrow(name)
extern "c" fn epoxy_glGetSubroutineUniformLocation(
  fp : CPtr,
  program : UInt,
  shadertype : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetSubroutineUniformLocation"

///|
pub fn gl_get_subroutine_uniform_location(
  program : UInt,
  shadertype : UInt,
  name : Bytes,
) -> Int {
  epoxy_glGetSubroutineUniformLocation(
    d_glGetSubroutineUniformLocation.get(),
    program,
    shadertype,
    name,
  )
}

///|
let d_glGetSynciv : Dispatch = Dispatch::with_aliases("glGetSynciv", [
  "glGetSyncivAPPLE",
])

///|
#borrow(length, values)
extern "c" fn epoxy_glGetSynciv(
  fp : CPtr,
  sync : GLsync,
  pname : UInt,
  count : Int,
  length : FixedArray[Int],
  values : FixedArray[Int],
) -> Unit = "epoxy_glGetSynciv"

///|
pub fn gl_get_synciv(
  sync : GLsync,
  pname : UInt,
  count : Int,
  length : FixedArray[Int],
  values : FixedArray[Int],
) -> Unit {
  epoxy_glGetSynciv(d_glGetSynciv.get(), sync, pname, count, length, values)
}

///|
let d_glGetSyncivAPPLE : Dispatch = Dispatch::with_aliases("glGetSyncivAPPLE", [
  "glGetSynciv",
])

///|
#borrow(length, values)
extern "c" fn epoxy_glGetSyncivAPPLE(
  fp : CPtr,
  sync : GLsync,
  pname : UInt,
  count : Int,
  length : FixedArray[Int],
  values : FixedArray[Int],
) -> Unit = "epoxy_glGetSyncivAPPLE"

///|
pub fn gl_get_synciv_apple(
  sync : GLsync,
  pname : UInt,
  count : Int,
  length : FixedArray[Int],
  values : FixedArray[Int],
) -> Unit {
  epoxy_glGetSyncivAPPLE(
    d_glGetSyncivAPPLE.get(),
    sync,
    pname,
    count,
    length,
    values,
  )
}

///|
let d_glGetTexBumpParameterfvATI : Dispatch = Dispatch::new(
  "glGetTexBumpParameterfvATI",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetTexBumpParameterfvATI(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Float],
) -> Unit = "epoxy_glGetTexBumpParameterfvATI"

///|
pub fn gl_get_tex_bump_parameterfv_ati(
  pname : UInt,
  param : FixedArray[Float],
) -> Unit {
  epoxy_glGetTexBumpParameterfvATI(
    d_glGetTexBumpParameterfvATI.get(),
    pname,
    param,
  )
}

///|
let d_glGetTexBumpParameterivATI : Dispatch = Dispatch::new(
  "glGetTexBumpParameterivATI",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetTexBumpParameterivATI(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetTexBumpParameterivATI"

///|
pub fn gl_get_tex_bump_parameteriv_ati(
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexBumpParameterivATI(
    d_glGetTexBumpParameterivATI.get(),
    pname,
    param,
  )
}

///|
let d_glGetTexEnvfv : Dispatch = Dispatch::new("glGetTexEnvfv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexEnvfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTexEnvfv"

///|
pub fn gl_get_tex_envfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTexEnvfv(d_glGetTexEnvfv.get(), target, pname, params)
}

///|
let d_glGetTexEnviv : Dispatch = Dispatch::new("glGetTexEnviv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexEnviv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexEnviv"

///|
pub fn gl_get_tex_enviv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexEnviv(d_glGetTexEnviv.get(), target, pname, params)
}

///|
let d_glGetTexEnvxv : Dispatch = Dispatch::new("glGetTexEnvxv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexEnvxv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexEnvxv"

///|
pub fn gl_get_tex_envxv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexEnvxv(d_glGetTexEnvxv.get(), target, pname, params)
}

///|
let d_glGetTexEnvxvOES : Dispatch = Dispatch::new("glGetTexEnvxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexEnvxvOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexEnvxvOES"

///|
pub fn gl_get_tex_envxv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexEnvxvOES(d_glGetTexEnvxvOES.get(), target, pname, params)
}

///|
let d_glGetTexFilterFuncSGIS : Dispatch = Dispatch::new(
  "glGetTexFilterFuncSGIS",
)

///|
#borrow(weights)
extern "c" fn epoxy_glGetTexFilterFuncSGIS(
  fp : CPtr,
  target : UInt,
  filter : UInt,
  weights : FixedArray[Float],
) -> Unit = "epoxy_glGetTexFilterFuncSGIS"

///|
pub fn gl_get_tex_filter_func_sgis(
  target : UInt,
  filter : UInt,
  weights : FixedArray[Float],
) -> Unit {
  epoxy_glGetTexFilterFuncSGIS(
    d_glGetTexFilterFuncSGIS.get(),
    target,
    filter,
    weights,
  )
}

///|
let d_glGetTexGendv : Dispatch = Dispatch::new("glGetTexGendv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexGendv(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetTexGendv"

///|
pub fn gl_get_tex_gendv(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetTexGendv(d_glGetTexGendv.get(), coord, pname, params)
}

///|
let d_glGetTexGenfv : Dispatch = Dispatch::new("glGetTexGenfv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexGenfv(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTexGenfv"

///|
pub fn gl_get_tex_genfv(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTexGenfv(d_glGetTexGenfv.get(), coord, pname, params)
}

///|
let d_glGetTexGenfvOES : Dispatch = Dispatch::new("glGetTexGenfvOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexGenfvOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTexGenfvOES"

///|
pub fn gl_get_tex_genfv_oes(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTexGenfvOES(d_glGetTexGenfvOES.get(), coord, pname, params)
}

///|
let d_glGetTexGeniv : Dispatch = Dispatch::new("glGetTexGeniv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexGeniv(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexGeniv"

///|
pub fn gl_get_tex_geniv(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexGeniv(d_glGetTexGeniv.get(), coord, pname, params)
}

///|
let d_glGetTexGenivOES : Dispatch = Dispatch::new("glGetTexGenivOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexGenivOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexGenivOES"

///|
pub fn gl_get_tex_geniv_oes(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexGenivOES(d_glGetTexGenivOES.get(), coord, pname, params)
}

///|
let d_glGetTexGenxvOES : Dispatch = Dispatch::new("glGetTexGenxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexGenxvOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexGenxvOES"

///|
pub fn gl_get_tex_genxv_oes(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexGenxvOES(d_glGetTexGenxvOES.get(), coord, pname, params)
}

///|
let d_glGetTexImage : Dispatch = Dispatch::new("glGetTexImage")

///|
#borrow(pixels)
extern "c" fn epoxy_glGetTexImage(
  fp : CPtr,
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glGetTexImage"

///|
pub fn gl_get_tex_image(
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetTexImage(
    d_glGetTexImage.get(),
    target,
    level,
    format,
    type_,
    pixels,
  )
}

///|
let d_glGetTexLevelParameterfv : Dispatch = Dispatch::new(
  "glGetTexLevelParameterfv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexLevelParameterfv(
  fp : CPtr,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTexLevelParameterfv"

///|
pub fn gl_get_tex_level_parameterfv(
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTexLevelParameterfv(
    d_glGetTexLevelParameterfv.get(),
    target,
    level,
    pname,
    params,
  )
}

///|
let d_glGetTexLevelParameteriv : Dispatch = Dispatch::new(
  "glGetTexLevelParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexLevelParameteriv(
  fp : CPtr,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexLevelParameteriv"

///|
pub fn gl_get_tex_level_parameteriv(
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexLevelParameteriv(
    d_glGetTexLevelParameteriv.get(),
    target,
    level,
    pname,
    params,
  )
}

///|
let d_glGetTexLevelParameterxvOES : Dispatch = Dispatch::new(
  "glGetTexLevelParameterxvOES",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexLevelParameterxvOES(
  fp : CPtr,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexLevelParameterxvOES"

///|
pub fn gl_get_tex_level_parameterxv_oes(
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexLevelParameterxvOES(
    d_glGetTexLevelParameterxvOES.get(),
    target,
    level,
    pname,
    params,
  )
}

///|
let d_glGetTexParameterIiv : Dispatch = Dispatch::with_aliases(
  "glGetTexParameterIiv",
  ["glGetTexParameterIivEXT", "glGetTexParameterIivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterIiv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexParameterIiv"

///|
pub fn gl_get_tex_parameter_iiv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexParameterIiv(
    d_glGetTexParameterIiv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetTexParameterIivEXT : Dispatch = Dispatch::with_aliases(
  "glGetTexParameterIivEXT",
  ["glGetTexParameterIiv", "glGetTexParameterIivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterIivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexParameterIivEXT"

///|
pub fn gl_get_tex_parameter_iiv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexParameterIivEXT(
    d_glGetTexParameterIivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetTexParameterIivOES : Dispatch = Dispatch::with_aliases(
  "glGetTexParameterIivOES",
  ["glGetTexParameterIiv", "glGetTexParameterIivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterIivOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexParameterIivOES"

///|
pub fn gl_get_tex_parameter_iiv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexParameterIivOES(
    d_glGetTexParameterIivOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetTexParameterIuiv : Dispatch = Dispatch::with_aliases(
  "glGetTexParameterIuiv",
  ["glGetTexParameterIuivEXT", "glGetTexParameterIuivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterIuiv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetTexParameterIuiv"

///|
pub fn gl_get_tex_parameter_iuiv(
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetTexParameterIuiv(
    d_glGetTexParameterIuiv.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetTexParameterIuivEXT : Dispatch = Dispatch::with_aliases(
  "glGetTexParameterIuivEXT",
  ["glGetTexParameterIuiv", "glGetTexParameterIuivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterIuivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetTexParameterIuivEXT"

///|
pub fn gl_get_tex_parameter_iuiv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetTexParameterIuivEXT(
    d_glGetTexParameterIuivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetTexParameterIuivOES : Dispatch = Dispatch::with_aliases(
  "glGetTexParameterIuivOES",
  ["glGetTexParameterIuiv", "glGetTexParameterIuivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterIuivOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetTexParameterIuivOES"

///|
pub fn gl_get_tex_parameter_iuiv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetTexParameterIuivOES(
    d_glGetTexParameterIuivOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetTexParameterfv : Dispatch = Dispatch::new("glGetTexParameterfv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTexParameterfv"

///|
pub fn gl_get_tex_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTexParameterfv(d_glGetTexParameterfv.get(), target, pname, params)
}

///|
let d_glGetTexParameteriv : Dispatch = Dispatch::new("glGetTexParameteriv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexParameteriv"

///|
pub fn gl_get_tex_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexParameteriv(d_glGetTexParameteriv.get(), target, pname, params)
}

///|
let d_glGetTexParameterxv : Dispatch = Dispatch::new("glGetTexParameterxv")

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterxv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexParameterxv"

///|
pub fn gl_get_tex_parameterxv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexParameterxv(d_glGetTexParameterxv.get(), target, pname, params)
}

///|
let d_glGetTexParameterxvOES : Dispatch = Dispatch::new(
  "glGetTexParameterxvOES",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTexParameterxvOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTexParameterxvOES"

///|
pub fn gl_get_tex_parameterxv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTexParameterxvOES(
    d_glGetTexParameterxvOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glGetTextureHandleARB : Dispatch = Dispatch::with_aliases(
  "glGetTextureHandleARB",
  ["glGetTextureHandleIMG"],
)

///|
extern "c" fn epoxy_glGetTextureHandleARB(fp : CPtr, texture : UInt) -> UInt64 = "epoxy_glGetTextureHandleARB"

///|
pub fn gl_get_texture_handle_arb(texture : UInt) -> UInt64 {
  epoxy_glGetTextureHandleARB(d_glGetTextureHandleARB.get(), texture)
}

///|
let d_glGetTextureHandleIMG : Dispatch = Dispatch::with_aliases(
  "glGetTextureHandleIMG",
  ["glGetTextureHandleARB"],
)

///|
extern "c" fn epoxy_glGetTextureHandleIMG(fp : CPtr, texture : UInt) -> UInt64 = "epoxy_glGetTextureHandleIMG"

///|
pub fn gl_get_texture_handle_img(texture : UInt) -> UInt64 {
  epoxy_glGetTextureHandleIMG(d_glGetTextureHandleIMG.get(), texture)
}

///|
let d_glGetTextureHandleNV : Dispatch = Dispatch::new("glGetTextureHandleNV")

///|
extern "c" fn epoxy_glGetTextureHandleNV(fp : CPtr, texture : UInt) -> UInt64 = "epoxy_glGetTextureHandleNV"

///|
pub fn gl_get_texture_handle_nv(texture : UInt) -> UInt64 {
  epoxy_glGetTextureHandleNV(d_glGetTextureHandleNV.get(), texture)
}

///|
let d_glGetTextureImage : Dispatch = Dispatch::new("glGetTextureImage")

///|
#borrow(pixels)
extern "c" fn epoxy_glGetTextureImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  pixels : Bytes,
) -> Unit = "epoxy_glGetTextureImage"

///|
pub fn gl_get_texture_image(
  texture : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetTextureImage(
    d_glGetTextureImage.get(),
    texture,
    level,
    format,
    type_,
    bufSize,
    pixels,
  )
}

///|
let d_glGetTextureImageEXT : Dispatch = Dispatch::new("glGetTextureImageEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glGetTextureImageEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glGetTextureImageEXT"

///|
pub fn gl_get_texture_image_ext(
  texture : UInt,
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetTextureImageEXT(
    d_glGetTextureImageEXT.get(),
    texture,
    target,
    level,
    format,
    type_,
    pixels,
  )
}

///|
let d_glGetTextureLevelParameterfv : Dispatch = Dispatch::new(
  "glGetTextureLevelParameterfv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureLevelParameterfv(
  fp : CPtr,
  texture : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTextureLevelParameterfv"

///|
pub fn gl_get_texture_level_parameterfv(
  texture : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTextureLevelParameterfv(
    d_glGetTextureLevelParameterfv.get(),
    texture,
    level,
    pname,
    params,
  )
}

///|
let d_glGetTextureLevelParameterfvEXT : Dispatch = Dispatch::new(
  "glGetTextureLevelParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureLevelParameterfvEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTextureLevelParameterfvEXT"

///|
pub fn gl_get_texture_level_parameterfv_ext(
  texture : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTextureLevelParameterfvEXT(
    d_glGetTextureLevelParameterfvEXT.get(),
    texture,
    target,
    level,
    pname,
    params,
  )
}

///|
let d_glGetTextureLevelParameteriv : Dispatch = Dispatch::new(
  "glGetTextureLevelParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureLevelParameteriv(
  fp : CPtr,
  texture : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTextureLevelParameteriv"

///|
pub fn gl_get_texture_level_parameteriv(
  texture : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTextureLevelParameteriv(
    d_glGetTextureLevelParameteriv.get(),
    texture,
    level,
    pname,
    params,
  )
}

///|
let d_glGetTextureLevelParameterivEXT : Dispatch = Dispatch::new(
  "glGetTextureLevelParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureLevelParameterivEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTextureLevelParameterivEXT"

///|
pub fn gl_get_texture_level_parameteriv_ext(
  texture : UInt,
  target : UInt,
  level : Int,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTextureLevelParameterivEXT(
    d_glGetTextureLevelParameterivEXT.get(),
    texture,
    target,
    level,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameterIiv : Dispatch = Dispatch::new(
  "glGetTextureParameterIiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameterIiv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTextureParameterIiv"

///|
pub fn gl_get_texture_parameter_iiv(
  texture : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTextureParameterIiv(
    d_glGetTextureParameterIiv.get(),
    texture,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameterIivEXT : Dispatch = Dispatch::new(
  "glGetTextureParameterIivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameterIivEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTextureParameterIivEXT"

///|
pub fn gl_get_texture_parameter_iiv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTextureParameterIivEXT(
    d_glGetTextureParameterIivEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameterIuiv : Dispatch = Dispatch::new(
  "glGetTextureParameterIuiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameterIuiv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetTextureParameterIuiv"

///|
pub fn gl_get_texture_parameter_iuiv(
  texture : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetTextureParameterIuiv(
    d_glGetTextureParameterIuiv.get(),
    texture,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameterIuivEXT : Dispatch = Dispatch::new(
  "glGetTextureParameterIuivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameterIuivEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetTextureParameterIuivEXT"

///|
pub fn gl_get_texture_parameter_iuiv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetTextureParameterIuivEXT(
    d_glGetTextureParameterIuivEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameterfv : Dispatch = Dispatch::new(
  "glGetTextureParameterfv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameterfv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTextureParameterfv"

///|
pub fn gl_get_texture_parameterfv(
  texture : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTextureParameterfv(
    d_glGetTextureParameterfv.get(),
    texture,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameterfvEXT : Dispatch = Dispatch::new(
  "glGetTextureParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameterfvEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetTextureParameterfvEXT"

///|
pub fn gl_get_texture_parameterfv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetTextureParameterfvEXT(
    d_glGetTextureParameterfvEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameteriv : Dispatch = Dispatch::new(
  "glGetTextureParameteriv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameteriv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTextureParameteriv"

///|
pub fn gl_get_texture_parameteriv(
  texture : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTextureParameteriv(
    d_glGetTextureParameteriv.get(),
    texture,
    pname,
    params,
  )
}

///|
let d_glGetTextureParameterivEXT : Dispatch = Dispatch::new(
  "glGetTextureParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetTextureParameterivEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTextureParameterivEXT"

///|
pub fn gl_get_texture_parameteriv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTextureParameterivEXT(
    d_glGetTextureParameterivEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glGetTextureSamplerHandleARB : Dispatch = Dispatch::with_aliases(
  "glGetTextureSamplerHandleARB",
  ["glGetTextureSamplerHandleIMG"],
)

///|
extern "c" fn epoxy_glGetTextureSamplerHandleARB(
  fp : CPtr,
  texture : UInt,
  sampler : UInt,
) -> UInt64 = "epoxy_glGetTextureSamplerHandleARB"

///|
pub fn gl_get_texture_sampler_handle_arb(
  texture : UInt,
  sampler : UInt,
) -> UInt64 {
  epoxy_glGetTextureSamplerHandleARB(
    d_glGetTextureSamplerHandleARB.get(),
    texture,
    sampler,
  )
}

///|
let d_glGetTextureSamplerHandleIMG : Dispatch = Dispatch::with_aliases(
  "glGetTextureSamplerHandleIMG",
  ["glGetTextureSamplerHandleARB"],
)

///|
extern "c" fn epoxy_glGetTextureSamplerHandleIMG(
  fp : CPtr,
  texture : UInt,
  sampler : UInt,
) -> UInt64 = "epoxy_glGetTextureSamplerHandleIMG"

///|
pub fn gl_get_texture_sampler_handle_img(
  texture : UInt,
  sampler : UInt,
) -> UInt64 {
  epoxy_glGetTextureSamplerHandleIMG(
    d_glGetTextureSamplerHandleIMG.get(),
    texture,
    sampler,
  )
}

///|
let d_glGetTextureSamplerHandleNV : Dispatch = Dispatch::new(
  "glGetTextureSamplerHandleNV",
)

///|
extern "c" fn epoxy_glGetTextureSamplerHandleNV(
  fp : CPtr,
  texture : UInt,
  sampler : UInt,
) -> UInt64 = "epoxy_glGetTextureSamplerHandleNV"

///|
pub fn gl_get_texture_sampler_handle_nv(
  texture : UInt,
  sampler : UInt,
) -> UInt64 {
  epoxy_glGetTextureSamplerHandleNV(
    d_glGetTextureSamplerHandleNV.get(),
    texture,
    sampler,
  )
}

///|
let d_glGetTextureSubImage : Dispatch = Dispatch::new("glGetTextureSubImage")

///|
#borrow(pixels)
extern "c" fn epoxy_glGetTextureSubImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  pixels : Bytes,
) -> Unit = "epoxy_glGetTextureSubImage"

///|
pub fn gl_get_texture_sub_image(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetTextureSubImage(
    d_glGetTextureSubImage.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    bufSize,
    pixels,
  )
}

///|
let d_glGetTrackMatrixivNV : Dispatch = Dispatch::new("glGetTrackMatrixivNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetTrackMatrixivNV(
  fp : CPtr,
  target : UInt,
  address : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetTrackMatrixivNV"

///|
pub fn gl_get_track_matrixiv_nv(
  target : UInt,
  address : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetTrackMatrixivNV(
    d_glGetTrackMatrixivNV.get(),
    target,
    address,
    pname,
    params,
  )
}

///|
let d_glGetTransformFeedbackVarying : Dispatch = Dispatch::with_aliases(
  "glGetTransformFeedbackVarying",
  ["glGetTransformFeedbackVaryingEXT"],
)

///|
#borrow(length, size, type_, name)
extern "c" fn epoxy_glGetTransformFeedbackVarying(
  fp : CPtr,
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit = "epoxy_glGetTransformFeedbackVarying"

///|
pub fn gl_get_transform_feedback_varying(
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit {
  epoxy_glGetTransformFeedbackVarying(
    d_glGetTransformFeedbackVarying.get(),
    program,
    index,
    bufSize,
    length,
    size,
    type_,
    name,
  )
}

///|
let d_glGetTransformFeedbackVaryingEXT : Dispatch = Dispatch::with_aliases(
  "glGetTransformFeedbackVaryingEXT",
  ["glGetTransformFeedbackVarying"],
)

///|
#borrow(length, size, type_, name)
extern "c" fn epoxy_glGetTransformFeedbackVaryingEXT(
  fp : CPtr,
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit = "epoxy_glGetTransformFeedbackVaryingEXT"

///|
pub fn gl_get_transform_feedback_varying_ext(
  program : UInt,
  index : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  size : FixedArray[Int],
  type_ : FixedArray[UInt],
  name : Bytes,
) -> Unit {
  epoxy_glGetTransformFeedbackVaryingEXT(
    d_glGetTransformFeedbackVaryingEXT.get(),
    program,
    index,
    bufSize,
    length,
    size,
    type_,
    name,
  )
}

///|
let d_glGetTransformFeedbackVaryingNV : Dispatch = Dispatch::new(
  "glGetTransformFeedbackVaryingNV",
)

///|
#borrow(location)
extern "c" fn epoxy_glGetTransformFeedbackVaryingNV(
  fp : CPtr,
  program : UInt,
  index : UInt,
  location : FixedArray[Int],
) -> Unit = "epoxy_glGetTransformFeedbackVaryingNV"

///|
pub fn gl_get_transform_feedback_varying_nv(
  program : UInt,
  index : UInt,
  location : FixedArray[Int],
) -> Unit {
  epoxy_glGetTransformFeedbackVaryingNV(
    d_glGetTransformFeedbackVaryingNV.get(),
    program,
    index,
    location,
  )
}

///|
let d_glGetTransformFeedbacki64_v : Dispatch = Dispatch::new(
  "glGetTransformFeedbacki64_v",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetTransformFeedbacki64_v(
  fp : CPtr,
  xfb : UInt,
  pname : UInt,
  index : UInt,
  param : FixedArray[Int64],
) -> Unit = "epoxy_glGetTransformFeedbacki64_v"

///|
pub fn gl_get_transform_feedbacki64_v(
  xfb : UInt,
  pname : UInt,
  index : UInt,
  param : FixedArray[Int64],
) -> Unit {
  epoxy_glGetTransformFeedbacki64_v(
    d_glGetTransformFeedbacki64_v.get(),
    xfb,
    pname,
    index,
    param,
  )
}

///|
let d_glGetTransformFeedbacki_v : Dispatch = Dispatch::new(
  "glGetTransformFeedbacki_v",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetTransformFeedbacki_v(
  fp : CPtr,
  xfb : UInt,
  pname : UInt,
  index : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetTransformFeedbacki_v"

///|
pub fn gl_get_transform_feedbacki_v(
  xfb : UInt,
  pname : UInt,
  index : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetTransformFeedbacki_v(
    d_glGetTransformFeedbacki_v.get(),
    xfb,
    pname,
    index,
    param,
  )
}

///|
let d_glGetTransformFeedbackiv : Dispatch = Dispatch::new(
  "glGetTransformFeedbackiv",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetTransformFeedbackiv(
  fp : CPtr,
  xfb : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetTransformFeedbackiv"

///|
pub fn gl_get_transform_feedbackiv(
  xfb : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetTransformFeedbackiv(
    d_glGetTransformFeedbackiv.get(),
    xfb,
    pname,
    param,
  )
}

///|
let d_glGetTranslatedShaderSourceANGLE : Dispatch = Dispatch::new(
  "glGetTranslatedShaderSourceANGLE",
)

///|
#borrow(length, source)
extern "c" fn epoxy_glGetTranslatedShaderSourceANGLE(
  fp : CPtr,
  shader : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  source : Bytes,
) -> Unit = "epoxy_glGetTranslatedShaderSourceANGLE"

///|
pub fn gl_get_translated_shader_source_angle(
  shader : UInt,
  bufSize : Int,
  length : FixedArray[Int],
  source : Bytes,
) -> Unit {
  epoxy_glGetTranslatedShaderSourceANGLE(
    d_glGetTranslatedShaderSourceANGLE.get(),
    shader,
    bufSize,
    length,
    source,
  )
}

///|
let d_glGetUniformBlockIndex : Dispatch = Dispatch::new(
  "glGetUniformBlockIndex",
)

///|
#borrow(uniformBlockName)
extern "c" fn epoxy_glGetUniformBlockIndex(
  fp : CPtr,
  program : UInt,
  uniformBlockName : Bytes,
) -> UInt = "epoxy_glGetUniformBlockIndex"

///|
pub fn gl_get_uniform_block_index(
  program : UInt,
  uniformBlockName : Bytes,
) -> UInt {
  epoxy_glGetUniformBlockIndex(
    d_glGetUniformBlockIndex.get(),
    program,
    uniformBlockName,
  )
}

///|
let d_glGetUniformBufferSizeEXT : Dispatch = Dispatch::new(
  "glGetUniformBufferSizeEXT",
)

///|
extern "c" fn epoxy_glGetUniformBufferSizeEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
) -> Int = "epoxy_glGetUniformBufferSizeEXT"

///|
pub fn gl_get_uniform_buffer_size_ext(program : UInt, location : Int) -> Int {
  epoxy_glGetUniformBufferSizeEXT(
    d_glGetUniformBufferSizeEXT.get(),
    program,
    location,
  )
}

///|
let d_glGetUniformIndices : Dispatch = Dispatch::new("glGetUniformIndices")

///|
#borrow(uniformNames, uniformIndices)
extern "c" fn epoxy_glGetUniformIndices(
  fp : CPtr,
  program : UInt,
  uniformCount : Int,
  uniformNames : FixedArray[Bytes],
  uniformIndices : FixedArray[UInt],
) -> Unit = "epoxy_glGetUniformIndices"

///|
pub fn gl_get_uniform_indices(
  program : UInt,
  uniformCount : Int,
  uniformNames : FixedArray[Bytes],
  uniformIndices : FixedArray[UInt],
) -> Unit {
  epoxy_glGetUniformIndices(
    d_glGetUniformIndices.get(),
    program,
    uniformCount,
    uniformNames,
    uniformIndices,
  )
}

///|
let d_glGetUniformLocation : Dispatch = Dispatch::with_aliases(
  "glGetUniformLocation",
  ["glGetUniformLocationARB"],
)

///|
#borrow(name)
extern "c" fn epoxy_glGetUniformLocation(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetUniformLocation"

///|
pub fn gl_get_uniform_location(program : UInt, name : Bytes) -> Int {
  epoxy_glGetUniformLocation(d_glGetUniformLocation.get(), program, name)
}

///|
let d_glGetUniformOffsetEXT : Dispatch = Dispatch::new("glGetUniformOffsetEXT")

///|
extern "c" fn epoxy_glGetUniformOffsetEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
) -> Int64 = "epoxy_glGetUniformOffsetEXT"

///|
pub fn gl_get_uniform_offset_ext(program : UInt, location : Int) -> Int64 {
  epoxy_glGetUniformOffsetEXT(d_glGetUniformOffsetEXT.get(), program, location)
}

///|
let d_glGetUniformSubroutineuiv : Dispatch = Dispatch::new(
  "glGetUniformSubroutineuiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformSubroutineuiv(
  fp : CPtr,
  shadertype : UInt,
  location : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetUniformSubroutineuiv"

///|
pub fn gl_get_uniform_subroutineuiv(
  shadertype : UInt,
  location : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetUniformSubroutineuiv(
    d_glGetUniformSubroutineuiv.get(),
    shadertype,
    location,
    params,
  )
}

///|
let d_glGetUniformdv : Dispatch = Dispatch::new("glGetUniformdv")

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformdv(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetUniformdv"

///|
pub fn gl_get_uniformdv(
  program : UInt,
  location : Int,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetUniformdv(d_glGetUniformdv.get(), program, location, params)
}

///|
let d_glGetUniformfv : Dispatch = Dispatch::with_aliases("glGetUniformfv", [
  "glGetUniformfvARB",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformfv(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetUniformfv"

///|
pub fn gl_get_uniformfv(
  program : UInt,
  location : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetUniformfv(d_glGetUniformfv.get(), program, location, params)
}

///|
let d_glGetUniformi64vARB : Dispatch = Dispatch::new("glGetUniformi64vARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformi64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetUniformi64vARB"

///|
pub fn gl_get_uniformi64v_arb(
  program : UInt,
  location : Int,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetUniformi64vARB(
    d_glGetUniformi64vARB.get(),
    program,
    location,
    params,
  )
}

///|
let d_glGetUniformi64vNV : Dispatch = Dispatch::new("glGetUniformi64vNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformi64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetUniformi64vNV"

///|
pub fn gl_get_uniformi64v_nv(
  program : UInt,
  location : Int,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetUniformi64vNV(
    d_glGetUniformi64vNV.get(),
    program,
    location,
    params,
  )
}

///|
let d_glGetUniformiv : Dispatch = Dispatch::with_aliases("glGetUniformiv", [
  "glGetUniformivARB",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetUniformiv"

///|
pub fn gl_get_uniformiv(
  program : UInt,
  location : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetUniformiv(d_glGetUniformiv.get(), program, location, params)
}

///|
let d_glGetUniformui64vARB : Dispatch = Dispatch::new("glGetUniformui64vARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformui64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetUniformui64vARB"

///|
pub fn gl_get_uniformui64v_arb(
  program : UInt,
  location : Int,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetUniformui64vARB(
    d_glGetUniformui64vARB.get(),
    program,
    location,
    params,
  )
}

///|
let d_glGetUniformui64vNV : Dispatch = Dispatch::new("glGetUniformui64vNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformui64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetUniformui64vNV"

///|
pub fn gl_get_uniformui64v_nv(
  program : UInt,
  location : Int,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetUniformui64vNV(
    d_glGetUniformui64vNV.get(),
    program,
    location,
    params,
  )
}

///|
let d_glGetUniformuiv : Dispatch = Dispatch::with_aliases("glGetUniformuiv", [
  "glGetUniformuivEXT",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformuiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetUniformuiv"

///|
pub fn gl_get_uniformuiv(
  program : UInt,
  location : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetUniformuiv(d_glGetUniformuiv.get(), program, location, params)
}

///|
let d_glGetUniformuivEXT : Dispatch = Dispatch::with_aliases(
  "glGetUniformuivEXT",
  ["glGetUniformuiv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetUniformuivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetUniformuivEXT"

///|
pub fn gl_get_uniformuiv_ext(
  program : UInt,
  location : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetUniformuivEXT(
    d_glGetUniformuivEXT.get(),
    program,
    location,
    params,
  )
}

///|
let d_glGetUnsignedBytevEXT : Dispatch = Dispatch::new("glGetUnsignedBytevEXT")

///|
#borrow(data)
extern "c" fn epoxy_glGetUnsignedBytevEXT(
  fp : CPtr,
  pname : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetUnsignedBytevEXT"

///|
pub fn gl_get_unsigned_bytev_ext(pname : UInt, data : Bytes) -> Unit {
  epoxy_glGetUnsignedBytevEXT(d_glGetUnsignedBytevEXT.get(), pname, data)
}

///|
let d_glGetUnsignedBytei_vEXT : Dispatch = Dispatch::new(
  "glGetUnsignedBytei_vEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetUnsignedBytei_vEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetUnsignedBytei_vEXT"

///|
pub fn gl_get_unsigned_bytei_v_ext(
  target : UInt,
  index : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glGetUnsignedBytei_vEXT(
    d_glGetUnsignedBytei_vEXT.get(),
    target,
    index,
    data,
  )
}

///|
let d_glGetVariantArrayObjectfvATI : Dispatch = Dispatch::new(
  "glGetVariantArrayObjectfvATI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVariantArrayObjectfvATI(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetVariantArrayObjectfvATI"

///|
pub fn gl_get_variant_array_objectfv_ati(
  id : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetVariantArrayObjectfvATI(
    d_glGetVariantArrayObjectfvATI.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetVariantArrayObjectivATI : Dispatch = Dispatch::new(
  "glGetVariantArrayObjectivATI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVariantArrayObjectivATI(
  fp : CPtr,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVariantArrayObjectivATI"

///|
pub fn gl_get_variant_array_objectiv_ati(
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVariantArrayObjectivATI(
    d_glGetVariantArrayObjectivATI.get(),
    id,
    pname,
    params,
  )
}

///|
let d_glGetVariantBooleanvEXT : Dispatch = Dispatch::new(
  "glGetVariantBooleanvEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetVariantBooleanvEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : Bytes,
) -> Unit = "epoxy_glGetVariantBooleanvEXT"

///|
pub fn gl_get_variant_booleanv_ext(
  id : UInt,
  value : UInt,
  data : Bytes,
) -> Unit {
  epoxy_glGetVariantBooleanvEXT(
    d_glGetVariantBooleanvEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetVariantFloatvEXT : Dispatch = Dispatch::new("glGetVariantFloatvEXT")

///|
#borrow(data)
extern "c" fn epoxy_glGetVariantFloatvEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : FixedArray[Float],
) -> Unit = "epoxy_glGetVariantFloatvEXT"

///|
pub fn gl_get_variant_floatv_ext(
  id : UInt,
  value : UInt,
  data : FixedArray[Float],
) -> Unit {
  epoxy_glGetVariantFloatvEXT(d_glGetVariantFloatvEXT.get(), id, value, data)
}

///|
let d_glGetVariantIntegervEXT : Dispatch = Dispatch::new(
  "glGetVariantIntegervEXT",
)

///|
#borrow(data)
extern "c" fn epoxy_glGetVariantIntegervEXT(
  fp : CPtr,
  id : UInt,
  value : UInt,
  data : FixedArray[Int],
) -> Unit = "epoxy_glGetVariantIntegervEXT"

///|
pub fn gl_get_variant_integerv_ext(
  id : UInt,
  value : UInt,
  data : FixedArray[Int],
) -> Unit {
  epoxy_glGetVariantIntegervEXT(
    d_glGetVariantIntegervEXT.get(),
    id,
    value,
    data,
  )
}

///|
let d_glGetVaryingLocationNV : Dispatch = Dispatch::new(
  "glGetVaryingLocationNV",
)

///|
#borrow(name)
extern "c" fn epoxy_glGetVaryingLocationNV(
  fp : CPtr,
  program : UInt,
  name : Bytes,
) -> Int = "epoxy_glGetVaryingLocationNV"

///|
pub fn gl_get_varying_location_nv(program : UInt, name : Bytes) -> Int {
  epoxy_glGetVaryingLocationNV(d_glGetVaryingLocationNV.get(), program, name)
}

///|
let d_glGetVertexArrayIndexed64iv : Dispatch = Dispatch::new(
  "glGetVertexArrayIndexed64iv",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetVertexArrayIndexed64iv(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
  pname : UInt,
  param : FixedArray[Int64],
) -> Unit = "epoxy_glGetVertexArrayIndexed64iv"

///|
pub fn gl_get_vertex_array_indexed64iv(
  vaobj : UInt,
  index : UInt,
  pname : UInt,
  param : FixedArray[Int64],
) -> Unit {
  epoxy_glGetVertexArrayIndexed64iv(
    d_glGetVertexArrayIndexed64iv.get(),
    vaobj,
    index,
    pname,
    param,
  )
}

///|
let d_glGetVertexArrayIndexediv : Dispatch = Dispatch::new(
  "glGetVertexArrayIndexediv",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetVertexArrayIndexediv(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexArrayIndexediv"

///|
pub fn gl_get_vertex_array_indexediv(
  vaobj : UInt,
  index : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexArrayIndexediv(
    d_glGetVertexArrayIndexediv.get(),
    vaobj,
    index,
    pname,
    param,
  )
}

///|
let d_glGetVertexArrayIntegeri_vEXT : Dispatch = Dispatch::new(
  "glGetVertexArrayIntegeri_vEXT",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetVertexArrayIntegeri_vEXT(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexArrayIntegeri_vEXT"

///|
pub fn gl_get_vertex_array_integeri_v_ext(
  vaobj : UInt,
  index : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexArrayIntegeri_vEXT(
    d_glGetVertexArrayIntegeri_vEXT.get(),
    vaobj,
    index,
    pname,
    param,
  )
}

///|
let d_glGetVertexArrayIntegervEXT : Dispatch = Dispatch::new(
  "glGetVertexArrayIntegervEXT",
)

///|
#borrow(param)
extern "c" fn epoxy_glGetVertexArrayIntegervEXT(
  fp : CPtr,
  vaobj : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexArrayIntegervEXT"

///|
pub fn gl_get_vertex_array_integerv_ext(
  vaobj : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexArrayIntegervEXT(
    d_glGetVertexArrayIntegervEXT.get(),
    vaobj,
    pname,
    param,
  )
}

///|
let d_glGetVertexArrayiv : Dispatch = Dispatch::new("glGetVertexArrayiv")

///|
#borrow(param)
extern "c" fn epoxy_glGetVertexArrayiv(
  fp : CPtr,
  vaobj : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexArrayiv"

///|
pub fn gl_get_vertex_arrayiv(
  vaobj : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexArrayiv(d_glGetVertexArrayiv.get(), vaobj, pname, param)
}

///|
let d_glGetVertexAttribArrayObjectfvATI : Dispatch = Dispatch::new(
  "glGetVertexAttribArrayObjectfvATI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribArrayObjectfvATI(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetVertexAttribArrayObjectfvATI"

///|
pub fn gl_get_vertex_attrib_array_objectfv_ati(
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetVertexAttribArrayObjectfvATI(
    d_glGetVertexAttribArrayObjectfvATI.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribArrayObjectivATI : Dispatch = Dispatch::new(
  "glGetVertexAttribArrayObjectivATI",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribArrayObjectivATI(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexAttribArrayObjectivATI"

///|
pub fn gl_get_vertex_attrib_array_objectiv_ati(
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexAttribArrayObjectivATI(
    d_glGetVertexAttribArrayObjectivATI.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribIiv : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribIiv",
  ["glGetVertexAttribIivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribIiv(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexAttribIiv"

///|
pub fn gl_get_vertex_attrib_iiv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexAttribIiv(d_glGetVertexAttribIiv.get(), index, pname, params)
}

///|
let d_glGetVertexAttribIivEXT : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribIivEXT",
  ["glGetVertexAttribIiv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribIivEXT(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexAttribIivEXT"

///|
pub fn gl_get_vertex_attrib_iiv_ext(
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexAttribIivEXT(
    d_glGetVertexAttribIivEXT.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribIuiv : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribIuiv",
  ["glGetVertexAttribIuivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribIuiv(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetVertexAttribIuiv"

///|
pub fn gl_get_vertex_attrib_iuiv(
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetVertexAttribIuiv(
    d_glGetVertexAttribIuiv.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribIuivEXT : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribIuivEXT",
  ["glGetVertexAttribIuiv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribIuivEXT(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetVertexAttribIuivEXT"

///|
pub fn gl_get_vertex_attrib_iuiv_ext(
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetVertexAttribIuivEXT(
    d_glGetVertexAttribIuivEXT.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribLdv : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribLdv",
  ["glGetVertexAttribLdvEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribLdv(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetVertexAttribLdv"

///|
pub fn gl_get_vertex_attrib_ldv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetVertexAttribLdv(d_glGetVertexAttribLdv.get(), index, pname, params)
}

///|
let d_glGetVertexAttribLdvEXT : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribLdvEXT",
  ["glGetVertexAttribLdv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribLdvEXT(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetVertexAttribLdvEXT"

///|
pub fn gl_get_vertex_attrib_ldv_ext(
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetVertexAttribLdvEXT(
    d_glGetVertexAttribLdvEXT.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribLi64vNV : Dispatch = Dispatch::new(
  "glGetVertexAttribLi64vNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribLi64vNV(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetVertexAttribLi64vNV"

///|
pub fn gl_get_vertex_attrib_li64v_nv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetVertexAttribLi64vNV(
    d_glGetVertexAttribLi64vNV.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribLui64vARB : Dispatch = Dispatch::new(
  "glGetVertexAttribLui64vARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribLui64vARB(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetVertexAttribLui64vARB"

///|
pub fn gl_get_vertex_attrib_lui64v_arb(
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetVertexAttribLui64vARB(
    d_glGetVertexAttribLui64vARB.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribLui64vNV : Dispatch = Dispatch::new(
  "glGetVertexAttribLui64vNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribLui64vNV(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetVertexAttribLui64vNV"

///|
pub fn gl_get_vertex_attrib_lui64v_nv(
  index : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetVertexAttribLui64vNV(
    d_glGetVertexAttribLui64vNV.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribdv : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribdv",
  ["glGetVertexAttribdvARB", "glGetVertexAttribdvNV"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribdv(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetVertexAttribdv"

///|
pub fn gl_get_vertex_attribdv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetVertexAttribdv(d_glGetVertexAttribdv.get(), index, pname, params)
}

///|
let d_glGetVertexAttribdvARB : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribdvARB",
  ["glGetVertexAttribdv", "glGetVertexAttribdvNV"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribdvARB(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetVertexAttribdvARB"

///|
pub fn gl_get_vertex_attribdv_arb(
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetVertexAttribdvARB(
    d_glGetVertexAttribdvARB.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribdvNV : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribdvNV",
  ["glGetVertexAttribdv", "glGetVertexAttribdvARB"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribdvNV(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetVertexAttribdvNV"

///|
pub fn gl_get_vertex_attribdv_nv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetVertexAttribdvNV(
    d_glGetVertexAttribdvNV.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribfv : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribfv",
  ["glGetVertexAttribfvARB", "glGetVertexAttribfvNV"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribfv(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetVertexAttribfv"

///|
pub fn gl_get_vertex_attribfv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetVertexAttribfv(d_glGetVertexAttribfv.get(), index, pname, params)
}

///|
let d_glGetVertexAttribfvARB : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribfvARB",
  ["glGetVertexAttribfv", "glGetVertexAttribfvNV"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribfvARB(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetVertexAttribfvARB"

///|
pub fn gl_get_vertex_attribfv_arb(
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetVertexAttribfvARB(
    d_glGetVertexAttribfvARB.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribfvNV : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribfvNV",
  ["glGetVertexAttribfv", "glGetVertexAttribfvARB"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribfvNV(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetVertexAttribfvNV"

///|
pub fn gl_get_vertex_attribfv_nv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetVertexAttribfvNV(
    d_glGetVertexAttribfvNV.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribiv : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribiv",
  ["glGetVertexAttribivARB", "glGetVertexAttribivNV"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribiv(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexAttribiv"

///|
pub fn gl_get_vertex_attribiv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexAttribiv(d_glGetVertexAttribiv.get(), index, pname, params)
}

///|
let d_glGetVertexAttribivARB : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribivARB",
  ["glGetVertexAttribiv", "glGetVertexAttribivNV"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribivARB(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexAttribivARB"

///|
pub fn gl_get_vertex_attribiv_arb(
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexAttribivARB(
    d_glGetVertexAttribivARB.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVertexAttribivNV : Dispatch = Dispatch::with_aliases(
  "glGetVertexAttribivNV",
  ["glGetVertexAttribiv", "glGetVertexAttribivARB"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVertexAttribivNV(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVertexAttribivNV"

///|
pub fn gl_get_vertex_attribiv_nv(
  index : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVertexAttribivNV(
    d_glGetVertexAttribivNV.get(),
    index,
    pname,
    params,
  )
}

///|
let d_glGetVideoCaptureStreamdvNV : Dispatch = Dispatch::new(
  "glGetVideoCaptureStreamdvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVideoCaptureStreamdvNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetVideoCaptureStreamdvNV"

///|
pub fn gl_get_video_capture_streamdv_nv(
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetVideoCaptureStreamdvNV(
    d_glGetVideoCaptureStreamdvNV.get(),
    video_capture_slot,
    stream,
    pname,
    params,
  )
}

///|
let d_glGetVideoCaptureStreamfvNV : Dispatch = Dispatch::new(
  "glGetVideoCaptureStreamfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVideoCaptureStreamfvNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetVideoCaptureStreamfvNV"

///|
pub fn gl_get_video_capture_streamfv_nv(
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetVideoCaptureStreamfvNV(
    d_glGetVideoCaptureStreamfvNV.get(),
    video_capture_slot,
    stream,
    pname,
    params,
  )
}

///|
let d_glGetVideoCaptureStreamivNV : Dispatch = Dispatch::new(
  "glGetVideoCaptureStreamivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetVideoCaptureStreamivNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVideoCaptureStreamivNV"

///|
pub fn gl_get_video_capture_streamiv_nv(
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVideoCaptureStreamivNV(
    d_glGetVideoCaptureStreamivNV.get(),
    video_capture_slot,
    stream,
    pname,
    params,
  )
}

///|
let d_glGetVideoCaptureivNV : Dispatch = Dispatch::new("glGetVideoCaptureivNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetVideoCaptureivNV(
  fp : CPtr,
  video_capture_slot : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVideoCaptureivNV"

///|
pub fn gl_get_video_captureiv_nv(
  video_capture_slot : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVideoCaptureivNV(
    d_glGetVideoCaptureivNV.get(),
    video_capture_slot,
    pname,
    params,
  )
}

///|
let d_glGetVideoi64vNV : Dispatch = Dispatch::new("glGetVideoi64vNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetVideoi64vNV(
  fp : CPtr,
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetVideoi64vNV"

///|
pub fn gl_get_videoi64v_nv(
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetVideoi64vNV(d_glGetVideoi64vNV.get(), video_slot, pname, params)
}

///|
let d_glGetVideoivNV : Dispatch = Dispatch::new("glGetVideoivNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetVideoivNV(
  fp : CPtr,
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetVideoivNV"

///|
pub fn gl_get_videoiv_nv(
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetVideoivNV(d_glGetVideoivNV.get(), video_slot, pname, params)
}

///|
let d_glGetVideoui64vNV : Dispatch = Dispatch::new("glGetVideoui64vNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetVideoui64vNV(
  fp : CPtr,
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetVideoui64vNV"

///|
pub fn gl_get_videoui64v_nv(
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetVideoui64vNV(d_glGetVideoui64vNV.get(), video_slot, pname, params)
}

///|
let d_glGetVideouivNV : Dispatch = Dispatch::new("glGetVideouivNV")

///|
#borrow(params)
extern "c" fn epoxy_glGetVideouivNV(
  fp : CPtr,
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetVideouivNV"

///|
pub fn gl_get_videouiv_nv(
  video_slot : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetVideouivNV(d_glGetVideouivNV.get(), video_slot, pname, params)
}

///|
let d_glGetnColorTable : Dispatch = Dispatch::new("glGetnColorTable")

///|
#borrow(table)
extern "c" fn epoxy_glGetnColorTable(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  table : Bytes,
) -> Unit = "epoxy_glGetnColorTable"

///|
pub fn gl_getn_color_table(
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  table : Bytes,
) -> Unit {
  epoxy_glGetnColorTable(
    d_glGetnColorTable.get(),
    target,
    format,
    type_,
    bufSize,
    table,
  )
}

///|
let d_glGetnColorTableARB : Dispatch = Dispatch::new("glGetnColorTableARB")

///|
#borrow(table)
extern "c" fn epoxy_glGetnColorTableARB(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  table : Bytes,
) -> Unit = "epoxy_glGetnColorTableARB"

///|
pub fn gl_getn_color_table_arb(
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  table : Bytes,
) -> Unit {
  epoxy_glGetnColorTableARB(
    d_glGetnColorTableARB.get(),
    target,
    format,
    type_,
    bufSize,
    table,
  )
}

///|
let d_glGetnCompressedTexImage : Dispatch = Dispatch::new(
  "glGetnCompressedTexImage",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glGetnCompressedTexImage(
  fp : CPtr,
  target : UInt,
  lod : Int,
  bufSize : Int,
  pixels : Bytes,
) -> Unit = "epoxy_glGetnCompressedTexImage"

///|
pub fn gl_getn_compressed_tex_image(
  target : UInt,
  lod : Int,
  bufSize : Int,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetnCompressedTexImage(
    d_glGetnCompressedTexImage.get(),
    target,
    lod,
    bufSize,
    pixels,
  )
}

///|
let d_glGetnCompressedTexImageARB : Dispatch = Dispatch::new(
  "glGetnCompressedTexImageARB",
)

///|
#borrow(img)
extern "c" fn epoxy_glGetnCompressedTexImageARB(
  fp : CPtr,
  target : UInt,
  lod : Int,
  bufSize : Int,
  img : Bytes,
) -> Unit = "epoxy_glGetnCompressedTexImageARB"

///|
pub fn gl_getn_compressed_tex_image_arb(
  target : UInt,
  lod : Int,
  bufSize : Int,
  img : Bytes,
) -> Unit {
  epoxy_glGetnCompressedTexImageARB(
    d_glGetnCompressedTexImageARB.get(),
    target,
    lod,
    bufSize,
    img,
  )
}

///|
let d_glGetnConvolutionFilter : Dispatch = Dispatch::new(
  "glGetnConvolutionFilter",
)

///|
#borrow(image)
extern "c" fn epoxy_glGetnConvolutionFilter(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  image : Bytes,
) -> Unit = "epoxy_glGetnConvolutionFilter"

///|
pub fn gl_getn_convolution_filter(
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  image : Bytes,
) -> Unit {
  epoxy_glGetnConvolutionFilter(
    d_glGetnConvolutionFilter.get(),
    target,
    format,
    type_,
    bufSize,
    image,
  )
}

///|
let d_glGetnConvolutionFilterARB : Dispatch = Dispatch::new(
  "glGetnConvolutionFilterARB",
)

///|
#borrow(image)
extern "c" fn epoxy_glGetnConvolutionFilterARB(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  image : Bytes,
) -> Unit = "epoxy_glGetnConvolutionFilterARB"

///|
pub fn gl_getn_convolution_filter_arb(
  target : UInt,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  image : Bytes,
) -> Unit {
  epoxy_glGetnConvolutionFilterARB(
    d_glGetnConvolutionFilterARB.get(),
    target,
    format,
    type_,
    bufSize,
    image,
  )
}

///|
let d_glGetnHistogram : Dispatch = Dispatch::new("glGetnHistogram")

///|
#borrow(values)
extern "c" fn epoxy_glGetnHistogram(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit = "epoxy_glGetnHistogram"

///|
pub fn gl_getn_histogram(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit {
  epoxy_glGetnHistogram(
    d_glGetnHistogram.get(),
    target,
    reset,
    format,
    type_,
    bufSize,
    values,
  )
}

///|
let d_glGetnHistogramARB : Dispatch = Dispatch::new("glGetnHistogramARB")

///|
#borrow(values)
extern "c" fn epoxy_glGetnHistogramARB(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit = "epoxy_glGetnHistogramARB"

///|
pub fn gl_getn_histogram_arb(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit {
  epoxy_glGetnHistogramARB(
    d_glGetnHistogramARB.get(),
    target,
    reset,
    format,
    type_,
    bufSize,
    values,
  )
}

///|
let d_glGetnMapdv : Dispatch = Dispatch::new("glGetnMapdv")

///|
#borrow(v)
extern "c" fn epoxy_glGetnMapdv(
  fp : CPtr,
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glGetnMapdv"

///|
pub fn gl_getn_mapdv(
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glGetnMapdv(d_glGetnMapdv.get(), target, query, bufSize, v)
}

///|
let d_glGetnMapdvARB : Dispatch = Dispatch::new("glGetnMapdvARB")

///|
#borrow(v)
extern "c" fn epoxy_glGetnMapdvARB(
  fp : CPtr,
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glGetnMapdvARB"

///|
pub fn gl_getn_mapdv_arb(
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glGetnMapdvARB(d_glGetnMapdvARB.get(), target, query, bufSize, v)
}

///|
let d_glGetnMapfv : Dispatch = Dispatch::new("glGetnMapfv")

///|
#borrow(v)
extern "c" fn epoxy_glGetnMapfv(
  fp : CPtr,
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glGetnMapfv"

///|
pub fn gl_getn_mapfv(
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glGetnMapfv(d_glGetnMapfv.get(), target, query, bufSize, v)
}

///|
let d_glGetnMapfvARB : Dispatch = Dispatch::new("glGetnMapfvARB")

///|
#borrow(v)
extern "c" fn epoxy_glGetnMapfvARB(
  fp : CPtr,
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glGetnMapfvARB"

///|
pub fn gl_getn_mapfv_arb(
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glGetnMapfvARB(d_glGetnMapfvARB.get(), target, query, bufSize, v)
}

///|
let d_glGetnMapiv : Dispatch = Dispatch::new("glGetnMapiv")

///|
#borrow(v)
extern "c" fn epoxy_glGetnMapiv(
  fp : CPtr,
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Int],
) -> Unit = "epoxy_glGetnMapiv"

///|
pub fn gl_getn_mapiv(
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glGetnMapiv(d_glGetnMapiv.get(), target, query, bufSize, v)
}

///|
let d_glGetnMapivARB : Dispatch = Dispatch::new("glGetnMapivARB")

///|
#borrow(v)
extern "c" fn epoxy_glGetnMapivARB(
  fp : CPtr,
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Int],
) -> Unit = "epoxy_glGetnMapivARB"

///|
pub fn gl_getn_mapiv_arb(
  target : UInt,
  query : UInt,
  bufSize : Int,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glGetnMapivARB(d_glGetnMapivARB.get(), target, query, bufSize, v)
}

///|
let d_glGetnMinmax : Dispatch = Dispatch::new("glGetnMinmax")

///|
#borrow(values)
extern "c" fn epoxy_glGetnMinmax(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit = "epoxy_glGetnMinmax"

///|
pub fn gl_getn_minmax(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit {
  epoxy_glGetnMinmax(
    d_glGetnMinmax.get(),
    target,
    reset,
    format,
    type_,
    bufSize,
    values,
  )
}

///|
let d_glGetnMinmaxARB : Dispatch = Dispatch::new("glGetnMinmaxARB")

///|
#borrow(values)
extern "c" fn epoxy_glGetnMinmaxARB(
  fp : CPtr,
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit = "epoxy_glGetnMinmaxARB"

///|
pub fn gl_getn_minmax_arb(
  target : UInt,
  reset : Bool,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  values : Bytes,
) -> Unit {
  epoxy_glGetnMinmaxARB(
    d_glGetnMinmaxARB.get(),
    target,
    reset,
    format,
    type_,
    bufSize,
    values,
  )
}

///|
let d_glGetnPixelMapfv : Dispatch = Dispatch::new("glGetnPixelMapfv")

///|
#borrow(values)
extern "c" fn epoxy_glGetnPixelMapfv(
  fp : CPtr,
  map : UInt,
  bufSize : Int,
  values : FixedArray[Float],
) -> Unit = "epoxy_glGetnPixelMapfv"

///|
pub fn gl_getn_pixel_mapfv(
  map : UInt,
  bufSize : Int,
  values : FixedArray[Float],
) -> Unit {
  epoxy_glGetnPixelMapfv(d_glGetnPixelMapfv.get(), map, bufSize, values)
}

///|
let d_glGetnPixelMapfvARB : Dispatch = Dispatch::new("glGetnPixelMapfvARB")

///|
#borrow(values)
extern "c" fn epoxy_glGetnPixelMapfvARB(
  fp : CPtr,
  map : UInt,
  bufSize : Int,
  values : FixedArray[Float],
) -> Unit = "epoxy_glGetnPixelMapfvARB"

///|
pub fn gl_getn_pixel_mapfv_arb(
  map : UInt,
  bufSize : Int,
  values : FixedArray[Float],
) -> Unit {
  epoxy_glGetnPixelMapfvARB(d_glGetnPixelMapfvARB.get(), map, bufSize, values)
}

///|
let d_glGetnPixelMapuiv : Dispatch = Dispatch::new("glGetnPixelMapuiv")

///|
#borrow(values)
extern "c" fn epoxy_glGetnPixelMapuiv(
  fp : CPtr,
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt],
) -> Unit = "epoxy_glGetnPixelMapuiv"

///|
pub fn gl_getn_pixel_mapuiv(
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt],
) -> Unit {
  epoxy_glGetnPixelMapuiv(d_glGetnPixelMapuiv.get(), map, bufSize, values)
}

///|
let d_glGetnPixelMapuivARB : Dispatch = Dispatch::new("glGetnPixelMapuivARB")

///|
#borrow(values)
extern "c" fn epoxy_glGetnPixelMapuivARB(
  fp : CPtr,
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt],
) -> Unit = "epoxy_glGetnPixelMapuivARB"

///|
pub fn gl_getn_pixel_mapuiv_arb(
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt],
) -> Unit {
  epoxy_glGetnPixelMapuivARB(d_glGetnPixelMapuivARB.get(), map, bufSize, values)
}

///|
let d_glGetnPixelMapusv : Dispatch = Dispatch::new("glGetnPixelMapusv")

///|
#borrow(values)
extern "c" fn epoxy_glGetnPixelMapusv(
  fp : CPtr,
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt16],
) -> Unit = "epoxy_glGetnPixelMapusv"

///|
pub fn gl_getn_pixel_mapusv(
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt16],
) -> Unit {
  epoxy_glGetnPixelMapusv(d_glGetnPixelMapusv.get(), map, bufSize, values)
}

///|
let d_glGetnPixelMapusvARB : Dispatch = Dispatch::new("glGetnPixelMapusvARB")

///|
#borrow(values)
extern "c" fn epoxy_glGetnPixelMapusvARB(
  fp : CPtr,
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt16],
) -> Unit = "epoxy_glGetnPixelMapusvARB"

///|
pub fn gl_getn_pixel_mapusv_arb(
  map : UInt,
  bufSize : Int,
  values : FixedArray[UInt16],
) -> Unit {
  epoxy_glGetnPixelMapusvARB(d_glGetnPixelMapusvARB.get(), map, bufSize, values)
}

///|
let d_glGetnPolygonStipple : Dispatch = Dispatch::new("glGetnPolygonStipple")

///|
#borrow(pattern)
extern "c" fn epoxy_glGetnPolygonStipple(
  fp : CPtr,
  bufSize : Int,
  pattern : Bytes,
) -> Unit = "epoxy_glGetnPolygonStipple"

///|
pub fn gl_getn_polygon_stipple(bufSize : Int, pattern : Bytes) -> Unit {
  epoxy_glGetnPolygonStipple(d_glGetnPolygonStipple.get(), bufSize, pattern)
}

///|
let d_glGetnPolygonStippleARB : Dispatch = Dispatch::new(
  "glGetnPolygonStippleARB",
)

///|
#borrow(pattern)
extern "c" fn epoxy_glGetnPolygonStippleARB(
  fp : CPtr,
  bufSize : Int,
  pattern : Bytes,
) -> Unit = "epoxy_glGetnPolygonStippleARB"

///|
pub fn gl_getn_polygon_stipple_arb(bufSize : Int, pattern : Bytes) -> Unit {
  epoxy_glGetnPolygonStippleARB(
    d_glGetnPolygonStippleARB.get(),
    bufSize,
    pattern,
  )
}

///|
let d_glGetnSeparableFilter : Dispatch = Dispatch::new("glGetnSeparableFilter")

///|
#borrow(row, column, span)
extern "c" fn epoxy_glGetnSeparableFilter(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  rowBufSize : Int,
  row : Bytes,
  columnBufSize : Int,
  column : Bytes,
  span : Bytes,
) -> Unit = "epoxy_glGetnSeparableFilter"

///|
pub fn gl_getn_separable_filter(
  target : UInt,
  format : UInt,
  type_ : UInt,
  rowBufSize : Int,
  row : Bytes,
  columnBufSize : Int,
  column : Bytes,
  span : Bytes,
) -> Unit {
  epoxy_glGetnSeparableFilter(
    d_glGetnSeparableFilter.get(),
    target,
    format,
    type_,
    rowBufSize,
    row,
    columnBufSize,
    column,
    span,
  )
}

///|
let d_glGetnSeparableFilterARB : Dispatch = Dispatch::new(
  "glGetnSeparableFilterARB",
)

///|
#borrow(row, column, span)
extern "c" fn epoxy_glGetnSeparableFilterARB(
  fp : CPtr,
  target : UInt,
  format : UInt,
  type_ : UInt,
  rowBufSize : Int,
  row : Bytes,
  columnBufSize : Int,
  column : Bytes,
  span : Bytes,
) -> Unit = "epoxy_glGetnSeparableFilterARB"

///|
pub fn gl_getn_separable_filter_arb(
  target : UInt,
  format : UInt,
  type_ : UInt,
  rowBufSize : Int,
  row : Bytes,
  columnBufSize : Int,
  column : Bytes,
  span : Bytes,
) -> Unit {
  epoxy_glGetnSeparableFilterARB(
    d_glGetnSeparableFilterARB.get(),
    target,
    format,
    type_,
    rowBufSize,
    row,
    columnBufSize,
    column,
    span,
  )
}

///|
let d_glGetnTexImage : Dispatch = Dispatch::new("glGetnTexImage")

///|
#borrow(pixels)
extern "c" fn epoxy_glGetnTexImage(
  fp : CPtr,
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  pixels : Bytes,
) -> Unit = "epoxy_glGetnTexImage"

///|
pub fn gl_getn_tex_image(
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  pixels : Bytes,
) -> Unit {
  epoxy_glGetnTexImage(
    d_glGetnTexImage.get(),
    target,
    level,
    format,
    type_,
    bufSize,
    pixels,
  )
}

///|
let d_glGetnTexImageARB : Dispatch = Dispatch::new("glGetnTexImageARB")

///|
#borrow(img)
extern "c" fn epoxy_glGetnTexImageARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  img : Bytes,
) -> Unit = "epoxy_glGetnTexImageARB"

///|
pub fn gl_getn_tex_image_arb(
  target : UInt,
  level : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  img : Bytes,
) -> Unit {
  epoxy_glGetnTexImageARB(
    d_glGetnTexImageARB.get(),
    target,
    level,
    format,
    type_,
    bufSize,
    img,
  )
}

///|
let d_glGetnUniformdv : Dispatch = Dispatch::new("glGetnUniformdv")

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformdv(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetnUniformdv"

///|
pub fn gl_getn_uniformdv(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetnUniformdv(
    d_glGetnUniformdv.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformdvARB : Dispatch = Dispatch::new("glGetnUniformdvARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformdvARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Double],
) -> Unit = "epoxy_glGetnUniformdvARB"

///|
pub fn gl_getn_uniformdv_arb(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glGetnUniformdvARB(
    d_glGetnUniformdvARB.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformfv : Dispatch = Dispatch::with_aliases("glGetnUniformfv", [
  "glGetnUniformfvEXT", "glGetnUniformfvKHR",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformfv(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetnUniformfv"

///|
pub fn gl_getn_uniformfv(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetnUniformfv(
    d_glGetnUniformfv.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformfvARB : Dispatch = Dispatch::new("glGetnUniformfvARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformfvARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetnUniformfvARB"

///|
pub fn gl_getn_uniformfv_arb(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetnUniformfvARB(
    d_glGetnUniformfvARB.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformfvEXT : Dispatch = Dispatch::with_aliases(
  "glGetnUniformfvEXT",
  ["glGetnUniformfv", "glGetnUniformfvKHR"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformfvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetnUniformfvEXT"

///|
pub fn gl_getn_uniformfv_ext(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetnUniformfvEXT(
    d_glGetnUniformfvEXT.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformfvKHR : Dispatch = Dispatch::with_aliases(
  "glGetnUniformfvKHR",
  ["glGetnUniformfv", "glGetnUniformfvEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformfvKHR(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glGetnUniformfvKHR"

///|
pub fn gl_getn_uniformfv_khr(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glGetnUniformfvKHR(
    d_glGetnUniformfvKHR.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformi64vARB : Dispatch = Dispatch::new("glGetnUniformi64vARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformi64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glGetnUniformi64vARB"

///|
pub fn gl_getn_uniformi64v_arb(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glGetnUniformi64vARB(
    d_glGetnUniformi64vARB.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformiv : Dispatch = Dispatch::with_aliases("glGetnUniformiv", [
  "glGetnUniformivEXT", "glGetnUniformivKHR",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetnUniformiv"

///|
pub fn gl_getn_uniformiv(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetnUniformiv(
    d_glGetnUniformiv.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformivARB : Dispatch = Dispatch::new("glGetnUniformivARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformivARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetnUniformivARB"

///|
pub fn gl_getn_uniformiv_arb(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetnUniformivARB(
    d_glGetnUniformivARB.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformivEXT : Dispatch = Dispatch::with_aliases(
  "glGetnUniformivEXT",
  ["glGetnUniformiv", "glGetnUniformivKHR"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetnUniformivEXT"

///|
pub fn gl_getn_uniformiv_ext(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetnUniformivEXT(
    d_glGetnUniformivEXT.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformivKHR : Dispatch = Dispatch::with_aliases(
  "glGetnUniformivKHR",
  ["glGetnUniformiv", "glGetnUniformivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformivKHR(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetnUniformivKHR"

///|
pub fn gl_getn_uniformiv_khr(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetnUniformivKHR(
    d_glGetnUniformivKHR.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformui64vARB : Dispatch = Dispatch::new("glGetnUniformui64vARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformui64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glGetnUniformui64vARB"

///|
pub fn gl_getn_uniformui64v_arb(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glGetnUniformui64vARB(
    d_glGetnUniformui64vARB.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformuiv : Dispatch = Dispatch::with_aliases("glGetnUniformuiv", [
  "glGetnUniformuivKHR",
])

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformuiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetnUniformuiv"

///|
pub fn gl_getn_uniformuiv(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetnUniformuiv(
    d_glGetnUniformuiv.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformuivARB : Dispatch = Dispatch::new("glGetnUniformuivARB")

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformuivARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetnUniformuivARB"

///|
pub fn gl_getn_uniformuiv_arb(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetnUniformuivARB(
    d_glGetnUniformuivARB.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGetnUniformuivKHR : Dispatch = Dispatch::with_aliases(
  "glGetnUniformuivKHR",
  ["glGetnUniformuiv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glGetnUniformuivKHR(
  fp : CPtr,
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glGetnUniformuivKHR"

///|
pub fn gl_getn_uniformuiv_khr(
  program : UInt,
  location : Int,
  bufSize : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glGetnUniformuivKHR(
    d_glGetnUniformuivKHR.get(),
    program,
    location,
    bufSize,
    params,
  )
}

///|
let d_glGlobalAlphaFactorbSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactorbSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactorbSUN(fp : CPtr, factor : Int) -> Unit = "epoxy_glGlobalAlphaFactorbSUN"

///|
pub fn gl_global_alpha_factorb_sun(factor : Int) -> Unit {
  epoxy_glGlobalAlphaFactorbSUN(d_glGlobalAlphaFactorbSUN.get(), factor)
}

///|
let d_glGlobalAlphaFactordSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactordSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactordSUN(fp : CPtr, factor : Double) -> Unit = "epoxy_glGlobalAlphaFactordSUN"

///|
pub fn gl_global_alpha_factord_sun(factor : Double) -> Unit {
  epoxy_glGlobalAlphaFactordSUN(d_glGlobalAlphaFactordSUN.get(), factor)
}

///|
let d_glGlobalAlphaFactorfSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactorfSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactorfSUN(fp : CPtr, factor : Float) -> Unit = "epoxy_glGlobalAlphaFactorfSUN"

///|
pub fn gl_global_alpha_factorf_sun(factor : Float) -> Unit {
  epoxy_glGlobalAlphaFactorfSUN(d_glGlobalAlphaFactorfSUN.get(), factor)
}

///|
let d_glGlobalAlphaFactoriSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactoriSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactoriSUN(fp : CPtr, factor : Int) -> Unit = "epoxy_glGlobalAlphaFactoriSUN"

///|
pub fn gl_global_alpha_factori_sun(factor : Int) -> Unit {
  epoxy_glGlobalAlphaFactoriSUN(d_glGlobalAlphaFactoriSUN.get(), factor)
}

///|
let d_glGlobalAlphaFactorsSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactorsSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactorsSUN(fp : CPtr, factor : Int) -> Unit = "epoxy_glGlobalAlphaFactorsSUN"

///|
pub fn gl_global_alpha_factors_sun(factor : Int) -> Unit {
  epoxy_glGlobalAlphaFactorsSUN(d_glGlobalAlphaFactorsSUN.get(), factor)
}

///|
let d_glGlobalAlphaFactorubSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactorubSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactorubSUN(fp : CPtr, factor : Int) -> Unit = "epoxy_glGlobalAlphaFactorubSUN"

///|
pub fn gl_global_alpha_factorub_sun(factor : Int) -> Unit {
  epoxy_glGlobalAlphaFactorubSUN(d_glGlobalAlphaFactorubSUN.get(), factor)
}

///|
let d_glGlobalAlphaFactoruiSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactoruiSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactoruiSUN(fp : CPtr, factor : UInt) -> Unit = "epoxy_glGlobalAlphaFactoruiSUN"

///|
pub fn gl_global_alpha_factorui_sun(factor : UInt) -> Unit {
  epoxy_glGlobalAlphaFactoruiSUN(d_glGlobalAlphaFactoruiSUN.get(), factor)
}

///|
let d_glGlobalAlphaFactorusSUN : Dispatch = Dispatch::new(
  "glGlobalAlphaFactorusSUN",
)

///|
extern "c" fn epoxy_glGlobalAlphaFactorusSUN(fp : CPtr, factor : Int) -> Unit = "epoxy_glGlobalAlphaFactorusSUN"

///|
pub fn gl_global_alpha_factorus_sun(factor : Int) -> Unit {
  epoxy_glGlobalAlphaFactorusSUN(d_glGlobalAlphaFactorusSUN.get(), factor)
}

///|
let d_glHint : Dispatch = Dispatch::new("glHint")

///|
extern "c" fn epoxy_glHint(fp : CPtr, target : UInt, mode : UInt) -> Unit = "epoxy_glHint"

///|
pub fn gl_hint(target : UInt, mode : UInt) -> Unit {
  epoxy_glHint(d_glHint.get(), target, mode)
}

///|
let d_glHintPGI : Dispatch = Dispatch::new("glHintPGI")

///|
extern "c" fn epoxy_glHintPGI(fp : CPtr, target : UInt, mode : Int) -> Unit = "epoxy_glHintPGI"

///|
pub fn gl_hint_pgi(target : UInt, mode : Int) -> Unit {
  epoxy_glHintPGI(d_glHintPGI.get(), target, mode)
}

///|
let d_glHistogram : Dispatch = Dispatch::with_aliases("glHistogram", [
  "glHistogramEXT",
])

///|
extern "c" fn epoxy_glHistogram(
  fp : CPtr,
  target : UInt,
  width : Int,
  internalformat : UInt,
  sink : Bool,
) -> Unit = "epoxy_glHistogram"

///|
pub fn gl_histogram(
  target : UInt,
  width : Int,
  internalformat : UInt,
  sink : Bool,
) -> Unit {
  epoxy_glHistogram(d_glHistogram.get(), target, width, internalformat, sink)
}

///|
let d_glHistogramEXT : Dispatch = Dispatch::with_aliases("glHistogramEXT", [
  "glHistogram",
])

///|
extern "c" fn epoxy_glHistogramEXT(
  fp : CPtr,
  target : UInt,
  width : Int,
  internalformat : UInt,
  sink : Bool,
) -> Unit = "epoxy_glHistogramEXT"

///|
pub fn gl_histogram_ext(
  target : UInt,
  width : Int,
  internalformat : UInt,
  sink : Bool,
) -> Unit {
  epoxy_glHistogramEXT(
    d_glHistogramEXT.get(),
    target,
    width,
    internalformat,
    sink,
  )
}

///|
let d_glIglooInterfaceSGIX : Dispatch = Dispatch::new("glIglooInterfaceSGIX")

///|
#borrow(params)
extern "c" fn epoxy_glIglooInterfaceSGIX(
  fp : CPtr,
  pname : UInt,
  params : Bytes,
) -> Unit = "epoxy_glIglooInterfaceSGIX"

///|
pub fn gl_igloo_interface_sgix(pname : UInt, params : Bytes) -> Unit {
  epoxy_glIglooInterfaceSGIX(d_glIglooInterfaceSGIX.get(), pname, params)
}

///|
let d_glImageTransformParameterfHP : Dispatch = Dispatch::new(
  "glImageTransformParameterfHP",
)

///|
extern "c" fn epoxy_glImageTransformParameterfHP(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glImageTransformParameterfHP"

///|
pub fn gl_image_transform_parameterf_hp(
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glImageTransformParameterfHP(
    d_glImageTransformParameterfHP.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glImageTransformParameterfvHP : Dispatch = Dispatch::new(
  "glImageTransformParameterfvHP",
)

///|
#borrow(params)
extern "c" fn epoxy_glImageTransformParameterfvHP(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glImageTransformParameterfvHP"

///|
pub fn gl_image_transform_parameterfv_hp(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glImageTransformParameterfvHP(
    d_glImageTransformParameterfvHP.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glImageTransformParameteriHP : Dispatch = Dispatch::new(
  "glImageTransformParameteriHP",
)

///|
extern "c" fn epoxy_glImageTransformParameteriHP(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glImageTransformParameteriHP"

///|
pub fn gl_image_transform_parameteri_hp(
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glImageTransformParameteriHP(
    d_glImageTransformParameteriHP.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glImageTransformParameterivHP : Dispatch = Dispatch::new(
  "glImageTransformParameterivHP",
)

///|
#borrow(params)
extern "c" fn epoxy_glImageTransformParameterivHP(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glImageTransformParameterivHP"

///|
pub fn gl_image_transform_parameteriv_hp(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glImageTransformParameterivHP(
    d_glImageTransformParameterivHP.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glImportMemoryFdEXT : Dispatch = Dispatch::new("glImportMemoryFdEXT")

///|
extern "c" fn epoxy_glImportMemoryFdEXT(
  fp : CPtr,
  memory : UInt,
  size : UInt64,
  handleType : UInt,
  fd : Int,
) -> Unit = "epoxy_glImportMemoryFdEXT"

///|
pub fn gl_import_memory_fd_ext(
  memory : UInt,
  size : UInt64,
  handleType : UInt,
  fd : Int,
) -> Unit {
  epoxy_glImportMemoryFdEXT(
    d_glImportMemoryFdEXT.get(),
    memory,
    size,
    handleType,
    fd,
  )
}

///|
let d_glImportMemoryWin32HandleEXT : Dispatch = Dispatch::new(
  "glImportMemoryWin32HandleEXT",
)

///|
#borrow(handle)
extern "c" fn epoxy_glImportMemoryWin32HandleEXT(
  fp : CPtr,
  memory : UInt,
  size : UInt64,
  handleType : UInt,
  handle : Bytes,
) -> Unit = "epoxy_glImportMemoryWin32HandleEXT"

///|
pub fn gl_import_memory_win32_handle_ext(
  memory : UInt,
  size : UInt64,
  handleType : UInt,
  handle : Bytes,
) -> Unit {
  epoxy_glImportMemoryWin32HandleEXT(
    d_glImportMemoryWin32HandleEXT.get(),
    memory,
    size,
    handleType,
    handle,
  )
}

///|
let d_glImportMemoryWin32NameEXT : Dispatch = Dispatch::new(
  "glImportMemoryWin32NameEXT",
)

///|
#borrow(name)
extern "c" fn epoxy_glImportMemoryWin32NameEXT(
  fp : CPtr,
  memory : UInt,
  size : UInt64,
  handleType : UInt,
  name : Bytes,
) -> Unit = "epoxy_glImportMemoryWin32NameEXT"

///|
pub fn gl_import_memory_win32_name_ext(
  memory : UInt,
  size : UInt64,
  handleType : UInt,
  name : Bytes,
) -> Unit {
  epoxy_glImportMemoryWin32NameEXT(
    d_glImportMemoryWin32NameEXT.get(),
    memory,
    size,
    handleType,
    name,
  )
}

///|
let d_glImportSemaphoreFdEXT : Dispatch = Dispatch::new(
  "glImportSemaphoreFdEXT",
)

///|
extern "c" fn epoxy_glImportSemaphoreFdEXT(
  fp : CPtr,
  semaphore : UInt,
  handleType : UInt,
  fd : Int,
) -> Unit = "epoxy_glImportSemaphoreFdEXT"

///|
pub fn gl_import_semaphore_fd_ext(
  semaphore : UInt,
  handleType : UInt,
  fd : Int,
) -> Unit {
  epoxy_glImportSemaphoreFdEXT(
    d_glImportSemaphoreFdEXT.get(),
    semaphore,
    handleType,
    fd,
  )
}

///|
let d_glImportSemaphoreWin32HandleEXT : Dispatch = Dispatch::new(
  "glImportSemaphoreWin32HandleEXT",
)

///|
#borrow(handle)
extern "c" fn epoxy_glImportSemaphoreWin32HandleEXT(
  fp : CPtr,
  semaphore : UInt,
  handleType : UInt,
  handle : Bytes,
) -> Unit = "epoxy_glImportSemaphoreWin32HandleEXT"

///|
pub fn gl_import_semaphore_win32_handle_ext(
  semaphore : UInt,
  handleType : UInt,
  handle : Bytes,
) -> Unit {
  epoxy_glImportSemaphoreWin32HandleEXT(
    d_glImportSemaphoreWin32HandleEXT.get(),
    semaphore,
    handleType,
    handle,
  )
}

///|
let d_glImportSemaphoreWin32NameEXT : Dispatch = Dispatch::new(
  "glImportSemaphoreWin32NameEXT",
)

///|
#borrow(name)
extern "c" fn epoxy_glImportSemaphoreWin32NameEXT(
  fp : CPtr,
  semaphore : UInt,
  handleType : UInt,
  name : Bytes,
) -> Unit = "epoxy_glImportSemaphoreWin32NameEXT"

///|
pub fn gl_import_semaphore_win32_name_ext(
  semaphore : UInt,
  handleType : UInt,
  name : Bytes,
) -> Unit {
  epoxy_glImportSemaphoreWin32NameEXT(
    d_glImportSemaphoreWin32NameEXT.get(),
    semaphore,
    handleType,
    name,
  )
}

///|
let d_glImportSyncEXT : Dispatch = Dispatch::new("glImportSyncEXT")

///|
extern "c" fn epoxy_glImportSyncEXT(
  fp : CPtr,
  external_sync_type : UInt,
  external_sync : Int64,
  flags : UInt,
) -> GLsync = "epoxy_glImportSyncEXT"

///|
pub fn gl_import_sync_ext(
  external_sync_type : UInt,
  external_sync : Int64,
  flags : UInt,
) -> GLsync {
  epoxy_glImportSyncEXT(
    d_glImportSyncEXT.get(),
    external_sync_type,
    external_sync,
    flags,
  )
}

///|
let d_glIndexFormatNV : Dispatch = Dispatch::new("glIndexFormatNV")

///|
extern "c" fn epoxy_glIndexFormatNV(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glIndexFormatNV"

///|
pub fn gl_index_format_nv(type_ : UInt, stride : Int) -> Unit {
  epoxy_glIndexFormatNV(d_glIndexFormatNV.get(), type_, stride)
}

///|
let d_glIndexFuncEXT : Dispatch = Dispatch::new("glIndexFuncEXT")

///|
extern "c" fn epoxy_glIndexFuncEXT(
  fp : CPtr,
  func : UInt,
  ref_ : Float,
) -> Unit = "epoxy_glIndexFuncEXT"

///|
pub fn gl_index_func_ext(func : UInt, ref_ : Float) -> Unit {
  epoxy_glIndexFuncEXT(d_glIndexFuncEXT.get(), func, ref_)
}

///|
let d_glIndexMask : Dispatch = Dispatch::new("glIndexMask")

///|
extern "c" fn epoxy_glIndexMask(fp : CPtr, mask : UInt) -> Unit = "epoxy_glIndexMask"

///|
pub fn gl_index_mask(mask : UInt) -> Unit {
  epoxy_glIndexMask(d_glIndexMask.get(), mask)
}

///|
let d_glIndexMaterialEXT : Dispatch = Dispatch::new("glIndexMaterialEXT")

///|
extern "c" fn epoxy_glIndexMaterialEXT(
  fp : CPtr,
  face : UInt,
  mode : UInt,
) -> Unit = "epoxy_glIndexMaterialEXT"

///|
pub fn gl_index_material_ext(face : UInt, mode : UInt) -> Unit {
  epoxy_glIndexMaterialEXT(d_glIndexMaterialEXT.get(), face, mode)
}

///|
let d_glIndexPointer : Dispatch = Dispatch::new("glIndexPointer")

///|
#borrow(pointer)
extern "c" fn epoxy_glIndexPointer(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glIndexPointer"

///|
pub fn gl_index_pointer(type_ : UInt, stride : Int, pointer : Bytes) -> Unit {
  epoxy_glIndexPointer(d_glIndexPointer.get(), type_, stride, pointer)
}

///|
let d_glIndexPointerEXT : Dispatch = Dispatch::new("glIndexPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glIndexPointerEXT(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glIndexPointerEXT"

///|
pub fn gl_index_pointer_ext(
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glIndexPointerEXT(
    d_glIndexPointerEXT.get(),
    type_,
    stride,
    count,
    pointer,
  )
}

///|
let d_glIndexd : Dispatch = Dispatch::new("glIndexd")

///|
extern "c" fn epoxy_glIndexd(fp : CPtr, c : Double) -> Unit = "epoxy_glIndexd"

///|
pub fn gl_indexd(c : Double) -> Unit {
  epoxy_glIndexd(d_glIndexd.get(), c)
}

///|
let d_glIndexdv : Dispatch = Dispatch::new("glIndexdv")

///|
#borrow(c)
extern "c" fn epoxy_glIndexdv(fp : CPtr, c : FixedArray[Double]) -> Unit = "epoxy_glIndexdv"

///|
pub fn gl_indexdv(c : FixedArray[Double]) -> Unit {
  epoxy_glIndexdv(d_glIndexdv.get(), c)
}

///|
let d_glIndexf : Dispatch = Dispatch::new("glIndexf")

///|
extern "c" fn epoxy_glIndexf(fp : CPtr, c : Float) -> Unit = "epoxy_glIndexf"

///|
pub fn gl_indexf(c : Float) -> Unit {
  epoxy_glIndexf(d_glIndexf.get(), c)
}

///|
let d_glIndexfv : Dispatch = Dispatch::new("glIndexfv")

///|
#borrow(c)
extern "c" fn epoxy_glIndexfv(fp : CPtr, c : FixedArray[Float]) -> Unit = "epoxy_glIndexfv"

///|
pub fn gl_indexfv(c : FixedArray[Float]) -> Unit {
  epoxy_glIndexfv(d_glIndexfv.get(), c)
}

///|
let d_glIndexi : Dispatch = Dispatch::new("glIndexi")

///|
extern "c" fn epoxy_glIndexi(fp : CPtr, c : Int) -> Unit = "epoxy_glIndexi"

///|
pub fn gl_indexi(c : Int) -> Unit {
  epoxy_glIndexi(d_glIndexi.get(), c)
}

///|
let d_glIndexiv : Dispatch = Dispatch::new("glIndexiv")

///|
#borrow(c)
extern "c" fn epoxy_glIndexiv(fp : CPtr, c : FixedArray[Int]) -> Unit = "epoxy_glIndexiv"

///|
pub fn gl_indexiv(c : FixedArray[Int]) -> Unit {
  epoxy_glIndexiv(d_glIndexiv.get(), c)
}

///|
let d_glIndexs : Dispatch = Dispatch::new("glIndexs")

///|
extern "c" fn epoxy_glIndexs(fp : CPtr, c : Int) -> Unit = "epoxy_glIndexs"

///|
pub fn gl_indexs(c : Int) -> Unit {
  epoxy_glIndexs(d_glIndexs.get(), c)
}

///|
let d_glIndexsv : Dispatch = Dispatch::new("glIndexsv")

///|
#borrow(c)
extern "c" fn epoxy_glIndexsv(fp : CPtr, c : FixedArray[Int16]) -> Unit = "epoxy_glIndexsv"

///|
pub fn gl_indexsv(c : FixedArray[Int16]) -> Unit {
  epoxy_glIndexsv(d_glIndexsv.get(), c)
}

///|
let d_glIndexub : Dispatch = Dispatch::new("glIndexub")

///|
extern "c" fn epoxy_glIndexub(fp : CPtr, c : Int) -> Unit = "epoxy_glIndexub"

///|
pub fn gl_indexub(c : Int) -> Unit {
  epoxy_glIndexub(d_glIndexub.get(), c)
}

///|
let d_glIndexubv : Dispatch = Dispatch::new("glIndexubv")

///|
#borrow(c)
extern "c" fn epoxy_glIndexubv(fp : CPtr, c : Bytes) -> Unit = "epoxy_glIndexubv"

///|
pub fn gl_indexubv(c : Bytes) -> Unit {
  epoxy_glIndexubv(d_glIndexubv.get(), c)
}

///|
let d_glIndexxOES : Dispatch = Dispatch::new("glIndexxOES")

///|
extern "c" fn epoxy_glIndexxOES(fp : CPtr, component : Int) -> Unit = "epoxy_glIndexxOES"

///|
pub fn gl_indexx_oes(component : Int) -> Unit {
  epoxy_glIndexxOES(d_glIndexxOES.get(), component)
}

///|
let d_glIndexxvOES : Dispatch = Dispatch::new("glIndexxvOES")

///|
#borrow(component)
extern "c" fn epoxy_glIndexxvOES(
  fp : CPtr,
  component : FixedArray[Int],
) -> Unit = "epoxy_glIndexxvOES"

///|
pub fn gl_indexxv_oes(component : FixedArray[Int]) -> Unit {
  epoxy_glIndexxvOES(d_glIndexxvOES.get(), component)
}

///|
let d_glInitNames : Dispatch = Dispatch::new("glInitNames")

///|
extern "c" fn epoxy_glInitNames(fp : CPtr) -> Unit = "epoxy_glInitNames"

///|
pub fn gl_init_names() -> Unit {
  epoxy_glInitNames(d_glInitNames.get())
}

///|
let d_glInsertComponentEXT : Dispatch = Dispatch::new("glInsertComponentEXT")

///|
extern "c" fn epoxy_glInsertComponentEXT(
  fp : CPtr,
  res : UInt,
  src : UInt,
  num : UInt,
) -> Unit = "epoxy_glInsertComponentEXT"

///|
pub fn gl_insert_component_ext(res : UInt, src : UInt, num : UInt) -> Unit {
  epoxy_glInsertComponentEXT(d_glInsertComponentEXT.get(), res, src, num)
}

///|
let d_glInsertEventMarkerEXT : Dispatch = Dispatch::new(
  "glInsertEventMarkerEXT",
)

///|
#borrow(marker)
extern "c" fn epoxy_glInsertEventMarkerEXT(
  fp : CPtr,
  length : Int,
  marker : Bytes,
) -> Unit = "epoxy_glInsertEventMarkerEXT"

///|
pub fn gl_insert_event_marker_ext(length : Int, marker : Bytes) -> Unit {
  epoxy_glInsertEventMarkerEXT(d_glInsertEventMarkerEXT.get(), length, marker)
}

///|
let d_glInstrumentsBufferSGIX : Dispatch = Dispatch::new(
  "glInstrumentsBufferSGIX",
)

///|
#borrow(buffer)
extern "c" fn epoxy_glInstrumentsBufferSGIX(
  fp : CPtr,
  size : Int,
  buffer : FixedArray[Int],
) -> Unit = "epoxy_glInstrumentsBufferSGIX"

///|
pub fn gl_instruments_buffer_sgix(size : Int, buffer : FixedArray[Int]) -> Unit {
  epoxy_glInstrumentsBufferSGIX(d_glInstrumentsBufferSGIX.get(), size, buffer)
}

///|
let d_glInterleavedArrays : Dispatch = Dispatch::new("glInterleavedArrays")

///|
#borrow(pointer)
extern "c" fn epoxy_glInterleavedArrays(
  fp : CPtr,
  format : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glInterleavedArrays"

///|
pub fn gl_interleaved_arrays(
  format : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glInterleavedArrays(
    d_glInterleavedArrays.get(),
    format,
    stride,
    pointer,
  )
}

///|
let d_glInterpolatePathsNV : Dispatch = Dispatch::new("glInterpolatePathsNV")

///|
extern "c" fn epoxy_glInterpolatePathsNV(
  fp : CPtr,
  resultPath : UInt,
  pathA : UInt,
  pathB : UInt,
  weight : Float,
) -> Unit = "epoxy_glInterpolatePathsNV"

///|
pub fn gl_interpolate_paths_nv(
  resultPath : UInt,
  pathA : UInt,
  pathB : UInt,
  weight : Float,
) -> Unit {
  epoxy_glInterpolatePathsNV(
    d_glInterpolatePathsNV.get(),
    resultPath,
    pathA,
    pathB,
    weight,
  )
}

///|
let d_glInvalidateBufferData : Dispatch = Dispatch::new(
  "glInvalidateBufferData",
)

///|
extern "c" fn epoxy_glInvalidateBufferData(fp : CPtr, buffer : UInt) -> Unit = "epoxy_glInvalidateBufferData"

///|
pub fn gl_invalidate_buffer_data(buffer : UInt) -> Unit {
  epoxy_glInvalidateBufferData(d_glInvalidateBufferData.get(), buffer)
}

///|
let d_glInvalidateBufferSubData : Dispatch = Dispatch::new(
  "glInvalidateBufferSubData",
)

///|
extern "c" fn epoxy_glInvalidateBufferSubData(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  length : Int64,
) -> Unit = "epoxy_glInvalidateBufferSubData"

///|
pub fn gl_invalidate_buffer_sub_data(
  buffer : UInt,
  offset : Int64,
  length : Int64,
) -> Unit {
  epoxy_glInvalidateBufferSubData(
    d_glInvalidateBufferSubData.get(),
    buffer,
    offset,
    length,
  )
}

///|
let d_glInvalidateFramebuffer : Dispatch = Dispatch::new(
  "glInvalidateFramebuffer",
)

///|
#borrow(attachments)
extern "c" fn epoxy_glInvalidateFramebuffer(
  fp : CPtr,
  target : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
) -> Unit = "epoxy_glInvalidateFramebuffer"

///|
pub fn gl_invalidate_framebuffer(
  target : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
) -> Unit {
  epoxy_glInvalidateFramebuffer(
    d_glInvalidateFramebuffer.get(),
    target,
    numAttachments,
    attachments,
  )
}

///|
let d_glInvalidateNamedFramebufferData : Dispatch = Dispatch::new(
  "glInvalidateNamedFramebufferData",
)

///|
#borrow(attachments)
extern "c" fn epoxy_glInvalidateNamedFramebufferData(
  fp : CPtr,
  framebuffer : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
) -> Unit = "epoxy_glInvalidateNamedFramebufferData"

///|
pub fn gl_invalidate_named_framebuffer_data(
  framebuffer : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
) -> Unit {
  epoxy_glInvalidateNamedFramebufferData(
    d_glInvalidateNamedFramebufferData.get(),
    framebuffer,
    numAttachments,
    attachments,
  )
}

///|
let d_glInvalidateNamedFramebufferSubData : Dispatch = Dispatch::new(
  "glInvalidateNamedFramebufferSubData",
)

///|
#borrow(attachments)
extern "c" fn epoxy_glInvalidateNamedFramebufferSubData(
  fp : CPtr,
  framebuffer : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glInvalidateNamedFramebufferSubData"

///|
pub fn gl_invalidate_named_framebuffer_sub_data(
  framebuffer : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glInvalidateNamedFramebufferSubData(
    d_glInvalidateNamedFramebufferSubData.get(),
    framebuffer,
    numAttachments,
    attachments,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glInvalidateSubFramebuffer : Dispatch = Dispatch::new(
  "glInvalidateSubFramebuffer",
)

///|
#borrow(attachments)
extern "c" fn epoxy_glInvalidateSubFramebuffer(
  fp : CPtr,
  target : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glInvalidateSubFramebuffer"

///|
pub fn gl_invalidate_sub_framebuffer(
  target : UInt,
  numAttachments : Int,
  attachments : FixedArray[UInt],
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glInvalidateSubFramebuffer(
    d_glInvalidateSubFramebuffer.get(),
    target,
    numAttachments,
    attachments,
    x,
    y,
    width,
    height,
  )
}

///|
let d_glInvalidateTexImage : Dispatch = Dispatch::new("glInvalidateTexImage")

///|
extern "c" fn epoxy_glInvalidateTexImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glInvalidateTexImage"

///|
pub fn gl_invalidate_tex_image(texture : UInt, level : Int) -> Unit {
  epoxy_glInvalidateTexImage(d_glInvalidateTexImage.get(), texture, level)
}

///|
let d_glInvalidateTexSubImage : Dispatch = Dispatch::new(
  "glInvalidateTexSubImage",
)

///|
extern "c" fn epoxy_glInvalidateTexSubImage(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit = "epoxy_glInvalidateTexSubImage"

///|
pub fn gl_invalidate_tex_sub_image(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit {
  epoxy_glInvalidateTexSubImage(
    d_glInvalidateTexSubImage.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
  )
}

///|
let d_glIsAsyncMarkerSGIX : Dispatch = Dispatch::new("glIsAsyncMarkerSGIX")

///|
extern "c" fn epoxy_glIsAsyncMarkerSGIX(fp : CPtr, marker : UInt) -> Bool = "epoxy_glIsAsyncMarkerSGIX"

///|
pub fn gl_is_async_marker_sgix(marker : UInt) -> Bool {
  epoxy_glIsAsyncMarkerSGIX(d_glIsAsyncMarkerSGIX.get(), marker)
}

///|
let d_glIsBuffer : Dispatch = Dispatch::with_aliases("glIsBuffer", [
  "glIsBufferARB",
])

///|
extern "c" fn epoxy_glIsBuffer(fp : CPtr, buffer : UInt) -> Bool = "epoxy_glIsBuffer"

///|
pub fn gl_is_buffer(buffer : UInt) -> Bool {
  epoxy_glIsBuffer(d_glIsBuffer.get(), buffer)
}

///|
let d_glIsBufferARB : Dispatch = Dispatch::with_aliases("glIsBufferARB", [
  "glIsBuffer",
])

///|
extern "c" fn epoxy_glIsBufferARB(fp : CPtr, buffer : UInt) -> Bool = "epoxy_glIsBufferARB"

///|
pub fn gl_is_buffer_arb(buffer : UInt) -> Bool {
  epoxy_glIsBufferARB(d_glIsBufferARB.get(), buffer)
}

///|
let d_glIsBufferResidentNV : Dispatch = Dispatch::new("glIsBufferResidentNV")

///|
extern "c" fn epoxy_glIsBufferResidentNV(fp : CPtr, target : UInt) -> Bool = "epoxy_glIsBufferResidentNV"

///|
pub fn gl_is_buffer_resident_nv(target : UInt) -> Bool {
  epoxy_glIsBufferResidentNV(d_glIsBufferResidentNV.get(), target)
}

///|
let d_glIsCommandListNV : Dispatch = Dispatch::new("glIsCommandListNV")

///|
extern "c" fn epoxy_glIsCommandListNV(fp : CPtr, list : UInt) -> Bool = "epoxy_glIsCommandListNV"

///|
pub fn gl_is_command_list_nv(list : UInt) -> Bool {
  epoxy_glIsCommandListNV(d_glIsCommandListNV.get(), list)
}

///|
let d_glIsEnabled : Dispatch = Dispatch::new("glIsEnabled")

///|
extern "c" fn epoxy_glIsEnabled(fp : CPtr, cap : UInt) -> Bool = "epoxy_glIsEnabled"

///|
pub fn gl_is_enabled(cap : UInt) -> Bool {
  epoxy_glIsEnabled(d_glIsEnabled.get(), cap)
}

///|
let d_glIsEnabledIndexedEXT : Dispatch = Dispatch::with_aliases(
  "glIsEnabledIndexedEXT",
  ["glIsEnabledi", "glIsEnablediEXT", "glIsEnablediNV", "glIsEnablediOES"],
)

///|
extern "c" fn epoxy_glIsEnabledIndexedEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Bool = "epoxy_glIsEnabledIndexedEXT"

///|
pub fn gl_is_enabled_indexed_ext(target : UInt, index : UInt) -> Bool {
  epoxy_glIsEnabledIndexedEXT(d_glIsEnabledIndexedEXT.get(), target, index)
}

///|
let d_glIsEnabledi : Dispatch = Dispatch::with_aliases("glIsEnabledi", [
  "glIsEnabledIndexedEXT", "glIsEnablediEXT", "glIsEnablediNV", "glIsEnablediOES",
])

///|
extern "c" fn epoxy_glIsEnabledi(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Bool = "epoxy_glIsEnabledi"

///|
pub fn gl_is_enabledi(target : UInt, index : UInt) -> Bool {
  epoxy_glIsEnabledi(d_glIsEnabledi.get(), target, index)
}

///|
let d_glIsEnablediEXT : Dispatch = Dispatch::with_aliases("glIsEnablediEXT", [
  "glIsEnabledIndexedEXT", "glIsEnabledi", "glIsEnablediNV", "glIsEnablediOES",
])

///|
extern "c" fn epoxy_glIsEnablediEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Bool = "epoxy_glIsEnablediEXT"

///|
pub fn gl_is_enabledi_ext(target : UInt, index : UInt) -> Bool {
  epoxy_glIsEnablediEXT(d_glIsEnablediEXT.get(), target, index)
}

///|
let d_glIsEnablediNV : Dispatch = Dispatch::with_aliases("glIsEnablediNV", [
  "glIsEnabledIndexedEXT", "glIsEnabledi", "glIsEnablediEXT", "glIsEnablediOES",
])

///|
extern "c" fn epoxy_glIsEnablediNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Bool = "epoxy_glIsEnablediNV"

///|
pub fn gl_is_enabledi_nv(target : UInt, index : UInt) -> Bool {
  epoxy_glIsEnablediNV(d_glIsEnablediNV.get(), target, index)
}

///|
let d_glIsEnablediOES : Dispatch = Dispatch::with_aliases("glIsEnablediOES", [
  "glIsEnabledIndexedEXT", "glIsEnabledi", "glIsEnablediEXT", "glIsEnablediNV",
])

///|
extern "c" fn epoxy_glIsEnablediOES(
  fp : CPtr,
  target : UInt,
  index : UInt,
) -> Bool = "epoxy_glIsEnablediOES"

///|
pub fn gl_is_enabledi_oes(target : UInt, index : UInt) -> Bool {
  epoxy_glIsEnablediOES(d_glIsEnablediOES.get(), target, index)
}

///|
let d_glIsFenceAPPLE : Dispatch = Dispatch::new("glIsFenceAPPLE")

///|
extern "c" fn epoxy_glIsFenceAPPLE(fp : CPtr, fence : UInt) -> Bool = "epoxy_glIsFenceAPPLE"

///|
pub fn gl_is_fence_apple(fence : UInt) -> Bool {
  epoxy_glIsFenceAPPLE(d_glIsFenceAPPLE.get(), fence)
}

///|
let d_glIsFenceNV : Dispatch = Dispatch::new("glIsFenceNV")

///|
extern "c" fn epoxy_glIsFenceNV(fp : CPtr, fence : UInt) -> Bool = "epoxy_glIsFenceNV"

///|
pub fn gl_is_fence_nv(fence : UInt) -> Bool {
  epoxy_glIsFenceNV(d_glIsFenceNV.get(), fence)
}

///|
let d_glIsFramebuffer : Dispatch = Dispatch::with_aliases("glIsFramebuffer", [
  "glIsFramebufferEXT",
])

///|
extern "c" fn epoxy_glIsFramebuffer(fp : CPtr, framebuffer : UInt) -> Bool = "epoxy_glIsFramebuffer"

///|
pub fn gl_is_framebuffer(framebuffer : UInt) -> Bool {
  epoxy_glIsFramebuffer(d_glIsFramebuffer.get(), framebuffer)
}

///|
let d_glIsFramebufferEXT : Dispatch = Dispatch::with_aliases(
  "glIsFramebufferEXT",
  ["glIsFramebuffer"],
)

///|
extern "c" fn epoxy_glIsFramebufferEXT(fp : CPtr, framebuffer : UInt) -> Bool = "epoxy_glIsFramebufferEXT"

///|
pub fn gl_is_framebuffer_ext(framebuffer : UInt) -> Bool {
  epoxy_glIsFramebufferEXT(d_glIsFramebufferEXT.get(), framebuffer)
}

///|
let d_glIsFramebufferOES : Dispatch = Dispatch::new("glIsFramebufferOES")

///|
extern "c" fn epoxy_glIsFramebufferOES(fp : CPtr, framebuffer : UInt) -> Bool = "epoxy_glIsFramebufferOES"

///|
pub fn gl_is_framebuffer_oes(framebuffer : UInt) -> Bool {
  epoxy_glIsFramebufferOES(d_glIsFramebufferOES.get(), framebuffer)
}

///|
let d_glIsImageHandleResidentARB : Dispatch = Dispatch::new(
  "glIsImageHandleResidentARB",
)

///|
extern "c" fn epoxy_glIsImageHandleResidentARB(
  fp : CPtr,
  handle : UInt64,
) -> Bool = "epoxy_glIsImageHandleResidentARB"

///|
pub fn gl_is_image_handle_resident_arb(handle : UInt64) -> Bool {
  epoxy_glIsImageHandleResidentARB(d_glIsImageHandleResidentARB.get(), handle)
}

///|
let d_glIsImageHandleResidentNV : Dispatch = Dispatch::new(
  "glIsImageHandleResidentNV",
)

///|
extern "c" fn epoxy_glIsImageHandleResidentNV(
  fp : CPtr,
  handle : UInt64,
) -> Bool = "epoxy_glIsImageHandleResidentNV"

///|
pub fn gl_is_image_handle_resident_nv(handle : UInt64) -> Bool {
  epoxy_glIsImageHandleResidentNV(d_glIsImageHandleResidentNV.get(), handle)
}

///|
let d_glIsList : Dispatch = Dispatch::new("glIsList")

///|
extern "c" fn epoxy_glIsList(fp : CPtr, list : UInt) -> Bool = "epoxy_glIsList"

///|
pub fn gl_is_list(list : UInt) -> Bool {
  epoxy_glIsList(d_glIsList.get(), list)
}

///|
let d_glIsMemoryObjectEXT : Dispatch = Dispatch::new("glIsMemoryObjectEXT")

///|
extern "c" fn epoxy_glIsMemoryObjectEXT(fp : CPtr, memoryObject : UInt) -> Bool = "epoxy_glIsMemoryObjectEXT"

///|
pub fn gl_is_memory_object_ext(memoryObject : UInt) -> Bool {
  epoxy_glIsMemoryObjectEXT(d_glIsMemoryObjectEXT.get(), memoryObject)
}

///|
let d_glIsNameAMD : Dispatch = Dispatch::new("glIsNameAMD")

///|
extern "c" fn epoxy_glIsNameAMD(
  fp : CPtr,
  identifier : UInt,
  name : UInt,
) -> Bool = "epoxy_glIsNameAMD"

///|
pub fn gl_is_name_amd(identifier : UInt, name : UInt) -> Bool {
  epoxy_glIsNameAMD(d_glIsNameAMD.get(), identifier, name)
}

///|
let d_glIsNamedBufferResidentNV : Dispatch = Dispatch::new(
  "glIsNamedBufferResidentNV",
)

///|
extern "c" fn epoxy_glIsNamedBufferResidentNV(fp : CPtr, buffer : UInt) -> Bool = "epoxy_glIsNamedBufferResidentNV"

///|
pub fn gl_is_named_buffer_resident_nv(buffer : UInt) -> Bool {
  epoxy_glIsNamedBufferResidentNV(d_glIsNamedBufferResidentNV.get(), buffer)
}

///|
let d_glIsNamedStringARB : Dispatch = Dispatch::new("glIsNamedStringARB")

///|
#borrow(name)
extern "c" fn epoxy_glIsNamedStringARB(
  fp : CPtr,
  namelen : Int,
  name : Bytes,
) -> Bool = "epoxy_glIsNamedStringARB"

///|
pub fn gl_is_named_string_arb(namelen : Int, name : Bytes) -> Bool {
  epoxy_glIsNamedStringARB(d_glIsNamedStringARB.get(), namelen, name)
}

///|
let d_glIsObjectBufferATI : Dispatch = Dispatch::new("glIsObjectBufferATI")

///|
extern "c" fn epoxy_glIsObjectBufferATI(fp : CPtr, buffer : UInt) -> Bool = "epoxy_glIsObjectBufferATI"

///|
pub fn gl_is_object_buffer_ati(buffer : UInt) -> Bool {
  epoxy_glIsObjectBufferATI(d_glIsObjectBufferATI.get(), buffer)
}

///|
let d_glIsOcclusionQueryNV : Dispatch = Dispatch::new("glIsOcclusionQueryNV")

///|
extern "c" fn epoxy_glIsOcclusionQueryNV(fp : CPtr, id : UInt) -> Bool = "epoxy_glIsOcclusionQueryNV"

///|
pub fn gl_is_occlusion_query_nv(id : UInt) -> Bool {
  epoxy_glIsOcclusionQueryNV(d_glIsOcclusionQueryNV.get(), id)
}

///|
let d_glIsPathNV : Dispatch = Dispatch::new("glIsPathNV")

///|
extern "c" fn epoxy_glIsPathNV(fp : CPtr, path : UInt) -> Bool = "epoxy_glIsPathNV"

///|
pub fn gl_is_path_nv(path : UInt) -> Bool {
  epoxy_glIsPathNV(d_glIsPathNV.get(), path)
}

///|
let d_glIsPointInFillPathNV : Dispatch = Dispatch::new("glIsPointInFillPathNV")

///|
extern "c" fn epoxy_glIsPointInFillPathNV(
  fp : CPtr,
  path : UInt,
  mask : UInt,
  x : Float,
  y : Float,
) -> Bool = "epoxy_glIsPointInFillPathNV"

///|
pub fn gl_is_point_in_fill_path_nv(
  path : UInt,
  mask : UInt,
  x : Float,
  y : Float,
) -> Bool {
  epoxy_glIsPointInFillPathNV(d_glIsPointInFillPathNV.get(), path, mask, x, y)
}

///|
let d_glIsPointInStrokePathNV : Dispatch = Dispatch::new(
  "glIsPointInStrokePathNV",
)

///|
extern "c" fn epoxy_glIsPointInStrokePathNV(
  fp : CPtr,
  path : UInt,
  x : Float,
  y : Float,
) -> Bool = "epoxy_glIsPointInStrokePathNV"

///|
pub fn gl_is_point_in_stroke_path_nv(path : UInt, x : Float, y : Float) -> Bool {
  epoxy_glIsPointInStrokePathNV(d_glIsPointInStrokePathNV.get(), path, x, y)
}

///|
let d_glIsProgram : Dispatch = Dispatch::new("glIsProgram")

///|
extern "c" fn epoxy_glIsProgram(fp : CPtr, program : UInt) -> Bool = "epoxy_glIsProgram"

///|
pub fn gl_is_program(program : UInt) -> Bool {
  epoxy_glIsProgram(d_glIsProgram.get(), program)
}

///|
let d_glIsProgramARB : Dispatch = Dispatch::with_aliases("glIsProgramARB", [
  "glIsProgramNV",
])

///|
extern "c" fn epoxy_glIsProgramARB(fp : CPtr, program : UInt) -> Bool = "epoxy_glIsProgramARB"

///|
pub fn gl_is_program_arb(program : UInt) -> Bool {
  epoxy_glIsProgramARB(d_glIsProgramARB.get(), program)
}

///|
let d_glIsProgramNV : Dispatch = Dispatch::with_aliases("glIsProgramNV", [
  "glIsProgramARB",
])

///|
extern "c" fn epoxy_glIsProgramNV(fp : CPtr, id : UInt) -> Bool = "epoxy_glIsProgramNV"

///|
pub fn gl_is_program_nv(id : UInt) -> Bool {
  epoxy_glIsProgramNV(d_glIsProgramNV.get(), id)
}

///|
let d_glIsProgramPipeline : Dispatch = Dispatch::new("glIsProgramPipeline")

///|
extern "c" fn epoxy_glIsProgramPipeline(fp : CPtr, pipeline : UInt) -> Bool = "epoxy_glIsProgramPipeline"

///|
pub fn gl_is_program_pipeline(pipeline : UInt) -> Bool {
  epoxy_glIsProgramPipeline(d_glIsProgramPipeline.get(), pipeline)
}

///|
let d_glIsProgramPipelineEXT : Dispatch = Dispatch::new(
  "glIsProgramPipelineEXT",
)

///|
extern "c" fn epoxy_glIsProgramPipelineEXT(fp : CPtr, pipeline : UInt) -> Bool = "epoxy_glIsProgramPipelineEXT"

///|
pub fn gl_is_program_pipeline_ext(pipeline : UInt) -> Bool {
  epoxy_glIsProgramPipelineEXT(d_glIsProgramPipelineEXT.get(), pipeline)
}

///|
let d_glIsQuery : Dispatch = Dispatch::with_aliases("glIsQuery", [
  "glIsQueryARB",
])

///|
extern "c" fn epoxy_glIsQuery(fp : CPtr, id : UInt) -> Bool = "epoxy_glIsQuery"

///|
pub fn gl_is_query(id : UInt) -> Bool {
  epoxy_glIsQuery(d_glIsQuery.get(), id)
}

///|
let d_glIsQueryARB : Dispatch = Dispatch::with_aliases("glIsQueryARB", [
  "glIsQuery",
])

///|
extern "c" fn epoxy_glIsQueryARB(fp : CPtr, id : UInt) -> Bool = "epoxy_glIsQueryARB"

///|
pub fn gl_is_query_arb(id : UInt) -> Bool {
  epoxy_glIsQueryARB(d_glIsQueryARB.get(), id)
}

///|
let d_glIsQueryEXT : Dispatch = Dispatch::new("glIsQueryEXT")

///|
extern "c" fn epoxy_glIsQueryEXT(fp : CPtr, id : UInt) -> Bool = "epoxy_glIsQueryEXT"

///|
pub fn gl_is_query_ext(id : UInt) -> Bool {
  epoxy_glIsQueryEXT(d_glIsQueryEXT.get(), id)
}

///|
let d_glIsRenderbuffer : Dispatch = Dispatch::with_aliases("glIsRenderbuffer", [
  "glIsRenderbufferEXT",
])

///|
extern "c" fn epoxy_glIsRenderbuffer(fp : CPtr, renderbuffer : UInt) -> Bool = "epoxy_glIsRenderbuffer"

///|
pub fn gl_is_renderbuffer(renderbuffer : UInt) -> Bool {
  epoxy_glIsRenderbuffer(d_glIsRenderbuffer.get(), renderbuffer)
}

///|
let d_glIsRenderbufferEXT : Dispatch = Dispatch::with_aliases(
  "glIsRenderbufferEXT",
  ["glIsRenderbuffer"],
)

///|
extern "c" fn epoxy_glIsRenderbufferEXT(fp : CPtr, renderbuffer : UInt) -> Bool = "epoxy_glIsRenderbufferEXT"

///|
pub fn gl_is_renderbuffer_ext(renderbuffer : UInt) -> Bool {
  epoxy_glIsRenderbufferEXT(d_glIsRenderbufferEXT.get(), renderbuffer)
}

///|
let d_glIsRenderbufferOES : Dispatch = Dispatch::new("glIsRenderbufferOES")

///|
extern "c" fn epoxy_glIsRenderbufferOES(fp : CPtr, renderbuffer : UInt) -> Bool = "epoxy_glIsRenderbufferOES"

///|
pub fn gl_is_renderbuffer_oes(renderbuffer : UInt) -> Bool {
  epoxy_glIsRenderbufferOES(d_glIsRenderbufferOES.get(), renderbuffer)
}

///|
let d_glIsSemaphoreEXT : Dispatch = Dispatch::new("glIsSemaphoreEXT")

///|
extern "c" fn epoxy_glIsSemaphoreEXT(fp : CPtr, semaphore : UInt) -> Bool = "epoxy_glIsSemaphoreEXT"

///|
pub fn gl_is_semaphore_ext(semaphore : UInt) -> Bool {
  epoxy_glIsSemaphoreEXT(d_glIsSemaphoreEXT.get(), semaphore)
}

///|
let d_glIsSampler : Dispatch = Dispatch::new("glIsSampler")

///|
extern "c" fn epoxy_glIsSampler(fp : CPtr, sampler : UInt) -> Bool = "epoxy_glIsSampler"

///|
pub fn gl_is_sampler(sampler : UInt) -> Bool {
  epoxy_glIsSampler(d_glIsSampler.get(), sampler)
}

///|
let d_glIsShader : Dispatch = Dispatch::new("glIsShader")

///|
extern "c" fn epoxy_glIsShader(fp : CPtr, shader : UInt) -> Bool = "epoxy_glIsShader"

///|
pub fn gl_is_shader(shader : UInt) -> Bool {
  epoxy_glIsShader(d_glIsShader.get(), shader)
}

///|
let d_glIsStateNV : Dispatch = Dispatch::new("glIsStateNV")

///|
extern "c" fn epoxy_glIsStateNV(fp : CPtr, state : UInt) -> Bool = "epoxy_glIsStateNV"

///|
pub fn gl_is_state_nv(state : UInt) -> Bool {
  epoxy_glIsStateNV(d_glIsStateNV.get(), state)
}

///|
let d_glIsSync : Dispatch = Dispatch::with_aliases("glIsSync", ["glIsSyncAPPLE"])

///|
extern "c" fn epoxy_glIsSync(fp : CPtr, sync : GLsync) -> Bool = "epoxy_glIsSync"

///|
pub fn gl_is_sync(sync : GLsync) -> Bool {
  epoxy_glIsSync(d_glIsSync.get(), sync)
}

///|
let d_glIsSyncAPPLE : Dispatch = Dispatch::with_aliases("glIsSyncAPPLE", [
  "glIsSync",
])

///|
extern "c" fn epoxy_glIsSyncAPPLE(fp : CPtr, sync : GLsync) -> Bool = "epoxy_glIsSyncAPPLE"

///|
pub fn gl_is_sync_apple(sync : GLsync) -> Bool {
  epoxy_glIsSyncAPPLE(d_glIsSyncAPPLE.get(), sync)
}

///|
let d_glIsTexture : Dispatch = Dispatch::new("glIsTexture")

///|
extern "c" fn epoxy_glIsTexture(fp : CPtr, texture : UInt) -> Bool = "epoxy_glIsTexture"

///|
pub fn gl_is_texture(texture : UInt) -> Bool {
  epoxy_glIsTexture(d_glIsTexture.get(), texture)
}

///|
let d_glIsTextureEXT : Dispatch = Dispatch::new("glIsTextureEXT")

///|
extern "c" fn epoxy_glIsTextureEXT(fp : CPtr, texture : UInt) -> Bool = "epoxy_glIsTextureEXT"

///|
pub fn gl_is_texture_ext(texture : UInt) -> Bool {
  epoxy_glIsTextureEXT(d_glIsTextureEXT.get(), texture)
}

///|
let d_glIsTextureHandleResidentARB : Dispatch = Dispatch::new(
  "glIsTextureHandleResidentARB",
)

///|
extern "c" fn epoxy_glIsTextureHandleResidentARB(
  fp : CPtr,
  handle : UInt64,
) -> Bool = "epoxy_glIsTextureHandleResidentARB"

///|
pub fn gl_is_texture_handle_resident_arb(handle : UInt64) -> Bool {
  epoxy_glIsTextureHandleResidentARB(
    d_glIsTextureHandleResidentARB.get(),
    handle,
  )
}

///|
let d_glIsTextureHandleResidentNV : Dispatch = Dispatch::new(
  "glIsTextureHandleResidentNV",
)

///|
extern "c" fn epoxy_glIsTextureHandleResidentNV(
  fp : CPtr,
  handle : UInt64,
) -> Bool = "epoxy_glIsTextureHandleResidentNV"

///|
pub fn gl_is_texture_handle_resident_nv(handle : UInt64) -> Bool {
  epoxy_glIsTextureHandleResidentNV(d_glIsTextureHandleResidentNV.get(), handle)
}

///|
let d_glIsTransformFeedback : Dispatch = Dispatch::with_aliases(
  "glIsTransformFeedback",
  ["glIsTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glIsTransformFeedback(fp : CPtr, id : UInt) -> Bool = "epoxy_glIsTransformFeedback"

///|
pub fn gl_is_transform_feedback(id : UInt) -> Bool {
  epoxy_glIsTransformFeedback(d_glIsTransformFeedback.get(), id)
}

///|
let d_glIsTransformFeedbackNV : Dispatch = Dispatch::with_aliases(
  "glIsTransformFeedbackNV",
  ["glIsTransformFeedback"],
)

///|
extern "c" fn epoxy_glIsTransformFeedbackNV(fp : CPtr, id : UInt) -> Bool = "epoxy_glIsTransformFeedbackNV"

///|
pub fn gl_is_transform_feedback_nv(id : UInt) -> Bool {
  epoxy_glIsTransformFeedbackNV(d_glIsTransformFeedbackNV.get(), id)
}

///|
let d_glIsVariantEnabledEXT : Dispatch = Dispatch::new("glIsVariantEnabledEXT")

///|
extern "c" fn epoxy_glIsVariantEnabledEXT(
  fp : CPtr,
  id : UInt,
  cap : UInt,
) -> Bool = "epoxy_glIsVariantEnabledEXT"

///|
pub fn gl_is_variant_enabled_ext(id : UInt, cap : UInt) -> Bool {
  epoxy_glIsVariantEnabledEXT(d_glIsVariantEnabledEXT.get(), id, cap)
}

///|
let d_glIsVertexArray : Dispatch = Dispatch::with_aliases("glIsVertexArray", [
  "glIsVertexArrayAPPLE", "glIsVertexArrayOES",
])

///|
extern "c" fn epoxy_glIsVertexArray(fp : CPtr, array : UInt) -> Bool = "epoxy_glIsVertexArray"

///|
pub fn gl_is_vertex_array(array : UInt) -> Bool {
  epoxy_glIsVertexArray(d_glIsVertexArray.get(), array)
}

///|
let d_glIsVertexArrayAPPLE : Dispatch = Dispatch::with_aliases(
  "glIsVertexArrayAPPLE",
  ["glIsVertexArray", "glIsVertexArrayOES"],
)

///|
extern "c" fn epoxy_glIsVertexArrayAPPLE(fp : CPtr, array : UInt) -> Bool = "epoxy_glIsVertexArrayAPPLE"

///|
pub fn gl_is_vertex_array_apple(array : UInt) -> Bool {
  epoxy_glIsVertexArrayAPPLE(d_glIsVertexArrayAPPLE.get(), array)
}

///|
let d_glIsVertexArrayOES : Dispatch = Dispatch::with_aliases(
  "glIsVertexArrayOES",
  ["glIsVertexArray", "glIsVertexArrayAPPLE"],
)

///|
extern "c" fn epoxy_glIsVertexArrayOES(fp : CPtr, array : UInt) -> Bool = "epoxy_glIsVertexArrayOES"

///|
pub fn gl_is_vertex_array_oes(array : UInt) -> Bool {
  epoxy_glIsVertexArrayOES(d_glIsVertexArrayOES.get(), array)
}

///|
let d_glIsVertexAttribEnabledAPPLE : Dispatch = Dispatch::new(
  "glIsVertexAttribEnabledAPPLE",
)

///|
extern "c" fn epoxy_glIsVertexAttribEnabledAPPLE(
  fp : CPtr,
  index : UInt,
  pname : UInt,
) -> Bool = "epoxy_glIsVertexAttribEnabledAPPLE"

///|
pub fn gl_is_vertex_attrib_enabled_apple(index : UInt, pname : UInt) -> Bool {
  epoxy_glIsVertexAttribEnabledAPPLE(
    d_glIsVertexAttribEnabledAPPLE.get(),
    index,
    pname,
  )
}

///|
let d_glLGPUCopyImageSubDataNVX : Dispatch = Dispatch::new(
  "glLGPUCopyImageSubDataNVX",
)

///|
extern "c" fn epoxy_glLGPUCopyImageSubDataNVX(
  fp : CPtr,
  sourceGpu : UInt,
  destinationGpuMask : UInt,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srxY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit = "epoxy_glLGPUCopyImageSubDataNVX"

///|
pub fn gl_lgpu_copy_image_sub_data_nvx(
  sourceGpu : UInt,
  destinationGpuMask : UInt,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srxY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit {
  epoxy_glLGPUCopyImageSubDataNVX(
    d_glLGPUCopyImageSubDataNVX.get(),
    sourceGpu,
    destinationGpuMask,
    srcName,
    srcTarget,
    srcLevel,
    srcX,
    srxY,
    srcZ,
    dstName,
    dstTarget,
    dstLevel,
    dstX,
    dstY,
    dstZ,
    width,
    height,
    depth,
  )
}

///|
let d_glLGPUInterlockNVX : Dispatch = Dispatch::new("glLGPUInterlockNVX")

///|
extern "c" fn epoxy_glLGPUInterlockNVX(fp : CPtr) -> Unit = "epoxy_glLGPUInterlockNVX"

///|
pub fn gl_lgpu_interlock_nvx() -> Unit {
  epoxy_glLGPUInterlockNVX(d_glLGPUInterlockNVX.get())
}

///|
let d_glLGPUNamedBufferSubDataNVX : Dispatch = Dispatch::new(
  "glLGPUNamedBufferSubDataNVX",
)

///|
#borrow(data)
extern "c" fn epoxy_glLGPUNamedBufferSubDataNVX(
  fp : CPtr,
  gpuMask : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glLGPUNamedBufferSubDataNVX"

///|
pub fn gl_lgpu_named_buffer_sub_data_nvx(
  gpuMask : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glLGPUNamedBufferSubDataNVX(
    d_glLGPUNamedBufferSubDataNVX.get(),
    gpuMask,
    buffer,
    offset,
    size,
    data,
  )
}

///|
let d_glLabelObjectEXT : Dispatch = Dispatch::new("glLabelObjectEXT")

///|
#borrow(label)
extern "c" fn epoxy_glLabelObjectEXT(
  fp : CPtr,
  type_ : UInt,
  object : UInt,
  length : Int,
  label : Bytes,
) -> Unit = "epoxy_glLabelObjectEXT"

///|
pub fn gl_label_object_ext(
  type_ : UInt,
  object : UInt,
  length : Int,
  label : Bytes,
) -> Unit {
  epoxy_glLabelObjectEXT(d_glLabelObjectEXT.get(), type_, object, length, label)
}

///|
let d_glLightEnviSGIX : Dispatch = Dispatch::new("glLightEnviSGIX")

///|
extern "c" fn epoxy_glLightEnviSGIX(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glLightEnviSGIX"

///|
pub fn gl_light_envi_sgix(pname : UInt, param : Int) -> Unit {
  epoxy_glLightEnviSGIX(d_glLightEnviSGIX.get(), pname, param)
}

///|
let d_glLightModelf : Dispatch = Dispatch::new("glLightModelf")

///|
extern "c" fn epoxy_glLightModelf(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glLightModelf"

///|
pub fn gl_light_modelf(pname : UInt, param : Float) -> Unit {
  epoxy_glLightModelf(d_glLightModelf.get(), pname, param)
}

///|
let d_glLightModelfv : Dispatch = Dispatch::new("glLightModelfv")

///|
#borrow(params)
extern "c" fn epoxy_glLightModelfv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glLightModelfv"

///|
pub fn gl_light_modelfv(pname : UInt, params : FixedArray[Float]) -> Unit {
  epoxy_glLightModelfv(d_glLightModelfv.get(), pname, params)
}

///|
let d_glLightModeli : Dispatch = Dispatch::new("glLightModeli")

///|
extern "c" fn epoxy_glLightModeli(fp : CPtr, pname : UInt, param : Int) -> Unit = "epoxy_glLightModeli"

///|
pub fn gl_light_modeli(pname : UInt, param : Int) -> Unit {
  epoxy_glLightModeli(d_glLightModeli.get(), pname, param)
}

///|
let d_glLightModeliv : Dispatch = Dispatch::new("glLightModeliv")

///|
#borrow(params)
extern "c" fn epoxy_glLightModeliv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glLightModeliv"

///|
pub fn gl_light_modeliv(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glLightModeliv(d_glLightModeliv.get(), pname, params)
}

///|
let d_glLightModelx : Dispatch = Dispatch::new("glLightModelx")

///|
extern "c" fn epoxy_glLightModelx(fp : CPtr, pname : UInt, param : Int) -> Unit = "epoxy_glLightModelx"

///|
pub fn gl_light_modelx(pname : UInt, param : Int) -> Unit {
  epoxy_glLightModelx(d_glLightModelx.get(), pname, param)
}

///|
let d_glLightModelxOES : Dispatch = Dispatch::new("glLightModelxOES")

///|
extern "c" fn epoxy_glLightModelxOES(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glLightModelxOES"

///|
pub fn gl_light_modelx_oes(pname : UInt, param : Int) -> Unit {
  epoxy_glLightModelxOES(d_glLightModelxOES.get(), pname, param)
}

///|
let d_glLightModelxv : Dispatch = Dispatch::new("glLightModelxv")

///|
#borrow(param)
extern "c" fn epoxy_glLightModelxv(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glLightModelxv"

///|
pub fn gl_light_modelxv(pname : UInt, param : FixedArray[Int]) -> Unit {
  epoxy_glLightModelxv(d_glLightModelxv.get(), pname, param)
}

///|
let d_glLightModelxvOES : Dispatch = Dispatch::new("glLightModelxvOES")

///|
#borrow(param)
extern "c" fn epoxy_glLightModelxvOES(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glLightModelxvOES"

///|
pub fn gl_light_modelxv_oes(pname : UInt, param : FixedArray[Int]) -> Unit {
  epoxy_glLightModelxvOES(d_glLightModelxvOES.get(), pname, param)
}

///|
let d_glLightf : Dispatch = Dispatch::new("glLightf")

///|
extern "c" fn epoxy_glLightf(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glLightf"

///|
pub fn gl_lightf(light : UInt, pname : UInt, param : Float) -> Unit {
  epoxy_glLightf(d_glLightf.get(), light, pname, param)
}

///|
let d_glLightfv : Dispatch = Dispatch::new("glLightfv")

///|
#borrow(params)
extern "c" fn epoxy_glLightfv(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glLightfv"

///|
pub fn gl_lightfv(
  light : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glLightfv(d_glLightfv.get(), light, pname, params)
}

///|
let d_glLighti : Dispatch = Dispatch::new("glLighti")

///|
extern "c" fn epoxy_glLighti(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glLighti"

///|
pub fn gl_lighti(light : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glLighti(d_glLighti.get(), light, pname, param)
}

///|
let d_glLightiv : Dispatch = Dispatch::new("glLightiv")

///|
#borrow(params)
extern "c" fn epoxy_glLightiv(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glLightiv"

///|
pub fn gl_lightiv(light : UInt, pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glLightiv(d_glLightiv.get(), light, pname, params)
}

///|
let d_glLightx : Dispatch = Dispatch::new("glLightx")

///|
extern "c" fn epoxy_glLightx(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glLightx"

///|
pub fn gl_lightx(light : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glLightx(d_glLightx.get(), light, pname, param)
}

///|
let d_glLightxOES : Dispatch = Dispatch::new("glLightxOES")

///|
extern "c" fn epoxy_glLightxOES(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glLightxOES"

///|
pub fn gl_lightx_oes(light : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glLightxOES(d_glLightxOES.get(), light, pname, param)
}

///|
let d_glLightxv : Dispatch = Dispatch::new("glLightxv")

///|
#borrow(params)
extern "c" fn epoxy_glLightxv(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glLightxv"

///|
pub fn gl_lightxv(light : UInt, pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glLightxv(d_glLightxv.get(), light, pname, params)
}

///|
let d_glLightxvOES : Dispatch = Dispatch::new("glLightxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glLightxvOES(
  fp : CPtr,
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glLightxvOES"

///|
pub fn gl_lightxv_oes(
  light : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glLightxvOES(d_glLightxvOES.get(), light, pname, params)
}

///|
let d_glLineStipple : Dispatch = Dispatch::new("glLineStipple")

///|
extern "c" fn epoxy_glLineStipple(
  fp : CPtr,
  factor : Int,
  pattern : Int,
) -> Unit = "epoxy_glLineStipple"

///|
pub fn gl_line_stipple(factor : Int, pattern : Int) -> Unit {
  epoxy_glLineStipple(d_glLineStipple.get(), factor, pattern)
}

///|
let d_glLineWidth : Dispatch = Dispatch::new("glLineWidth")

///|
extern "c" fn epoxy_glLineWidth(fp : CPtr, width : Float) -> Unit = "epoxy_glLineWidth"

///|
pub fn gl_line_width(width : Float) -> Unit {
  epoxy_glLineWidth(d_glLineWidth.get(), width)
}

///|
let d_glLineWidthx : Dispatch = Dispatch::new("glLineWidthx")

///|
extern "c" fn epoxy_glLineWidthx(fp : CPtr, width : Int) -> Unit = "epoxy_glLineWidthx"

///|
pub fn gl_line_widthx(width : Int) -> Unit {
  epoxy_glLineWidthx(d_glLineWidthx.get(), width)
}

///|
let d_glLineWidthxOES : Dispatch = Dispatch::new("glLineWidthxOES")

///|
extern "c" fn epoxy_glLineWidthxOES(fp : CPtr, width : Int) -> Unit = "epoxy_glLineWidthxOES"

///|
pub fn gl_line_widthx_oes(width : Int) -> Unit {
  epoxy_glLineWidthxOES(d_glLineWidthxOES.get(), width)
}

///|
let d_glLinkProgram : Dispatch = Dispatch::with_aliases("glLinkProgram", [
  "glLinkProgramARB",
])

///|
extern "c" fn epoxy_glLinkProgram(fp : CPtr, program : UInt) -> Unit = "epoxy_glLinkProgram"

///|
pub fn gl_link_program(program : UInt) -> Unit {
  epoxy_glLinkProgram(d_glLinkProgram.get(), program)
}

///|
let d_glListBase : Dispatch = Dispatch::new("glListBase")

///|
extern "c" fn epoxy_glListBase(fp : CPtr, base : UInt) -> Unit = "epoxy_glListBase"

///|
pub fn gl_list_base(base : UInt) -> Unit {
  epoxy_glListBase(d_glListBase.get(), base)
}

///|
let d_glListParameterfSGIX : Dispatch = Dispatch::new("glListParameterfSGIX")

///|
extern "c" fn epoxy_glListParameterfSGIX(
  fp : CPtr,
  list : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glListParameterfSGIX"

///|
pub fn gl_list_parameterf_sgix(
  list : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glListParameterfSGIX(d_glListParameterfSGIX.get(), list, pname, param)
}

///|
let d_glListParameterfvSGIX : Dispatch = Dispatch::new("glListParameterfvSGIX")

///|
#borrow(params)
extern "c" fn epoxy_glListParameterfvSGIX(
  fp : CPtr,
  list : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glListParameterfvSGIX"

///|
pub fn gl_list_parameterfv_sgix(
  list : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glListParameterfvSGIX(
    d_glListParameterfvSGIX.get(),
    list,
    pname,
    params,
  )
}

///|
let d_glListParameteriSGIX : Dispatch = Dispatch::new("glListParameteriSGIX")

///|
extern "c" fn epoxy_glListParameteriSGIX(
  fp : CPtr,
  list : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glListParameteriSGIX"

///|
pub fn gl_list_parameteri_sgix(list : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glListParameteriSGIX(d_glListParameteriSGIX.get(), list, pname, param)
}

///|
let d_glListParameterivSGIX : Dispatch = Dispatch::new("glListParameterivSGIX")

///|
#borrow(params)
extern "c" fn epoxy_glListParameterivSGIX(
  fp : CPtr,
  list : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glListParameterivSGIX"

///|
pub fn gl_list_parameteriv_sgix(
  list : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glListParameterivSGIX(
    d_glListParameterivSGIX.get(),
    list,
    pname,
    params,
  )
}

///|
let d_glLoadIdentity : Dispatch = Dispatch::new("glLoadIdentity")

///|
extern "c" fn epoxy_glLoadIdentity(fp : CPtr) -> Unit = "epoxy_glLoadIdentity"

///|
pub fn gl_load_identity() -> Unit {
  epoxy_glLoadIdentity(d_glLoadIdentity.get())
}

///|
let d_glLoadIdentityDeformationMapSGIX : Dispatch = Dispatch::new(
  "glLoadIdentityDeformationMapSGIX",
)

///|
extern "c" fn epoxy_glLoadIdentityDeformationMapSGIX(
  fp : CPtr,
  mask : UInt,
) -> Unit = "epoxy_glLoadIdentityDeformationMapSGIX"

///|
pub fn gl_load_identity_deformation_map_sgix(mask : UInt) -> Unit {
  epoxy_glLoadIdentityDeformationMapSGIX(
    d_glLoadIdentityDeformationMapSGIX.get(),
    mask,
  )
}

///|
let d_glLoadMatrixd : Dispatch = Dispatch::new("glLoadMatrixd")

///|
#borrow(m)
extern "c" fn epoxy_glLoadMatrixd(fp : CPtr, m : FixedArray[Double]) -> Unit = "epoxy_glLoadMatrixd"

///|
pub fn gl_load_matrixd(m : FixedArray[Double]) -> Unit {
  epoxy_glLoadMatrixd(d_glLoadMatrixd.get(), m)
}

///|
let d_glLoadMatrixf : Dispatch = Dispatch::new("glLoadMatrixf")

///|
#borrow(m)
extern "c" fn epoxy_glLoadMatrixf(fp : CPtr, m : FixedArray[Float]) -> Unit = "epoxy_glLoadMatrixf"

///|
pub fn gl_load_matrixf(m : FixedArray[Float]) -> Unit {
  epoxy_glLoadMatrixf(d_glLoadMatrixf.get(), m)
}

///|
let d_glLoadMatrixx : Dispatch = Dispatch::new("glLoadMatrixx")

///|
#borrow(m)
extern "c" fn epoxy_glLoadMatrixx(fp : CPtr, m : FixedArray[Int]) -> Unit = "epoxy_glLoadMatrixx"

///|
pub fn gl_load_matrixx(m : FixedArray[Int]) -> Unit {
  epoxy_glLoadMatrixx(d_glLoadMatrixx.get(), m)
}

///|
let d_glLoadMatrixxOES : Dispatch = Dispatch::new("glLoadMatrixxOES")

///|
#borrow(m)
extern "c" fn epoxy_glLoadMatrixxOES(fp : CPtr, m : FixedArray[Int]) -> Unit = "epoxy_glLoadMatrixxOES"

///|
pub fn gl_load_matrixx_oes(m : FixedArray[Int]) -> Unit {
  epoxy_glLoadMatrixxOES(d_glLoadMatrixxOES.get(), m)
}

///|
let d_glLoadName : Dispatch = Dispatch::new("glLoadName")

///|
extern "c" fn epoxy_glLoadName(fp : CPtr, name : UInt) -> Unit = "epoxy_glLoadName"

///|
pub fn gl_load_name(name : UInt) -> Unit {
  epoxy_glLoadName(d_glLoadName.get(), name)
}

///|
let d_glLoadPaletteFromModelViewMatrixOES : Dispatch = Dispatch::new(
  "glLoadPaletteFromModelViewMatrixOES",
)

///|
extern "c" fn epoxy_glLoadPaletteFromModelViewMatrixOES(fp : CPtr) -> Unit = "epoxy_glLoadPaletteFromModelViewMatrixOES"

///|
pub fn gl_load_palette_from_model_view_matrix_oes() -> Unit {
  epoxy_glLoadPaletteFromModelViewMatrixOES(
    d_glLoadPaletteFromModelViewMatrixOES.get(),
  )
}

///|
let d_glLoadProgramNV : Dispatch = Dispatch::new("glLoadProgramNV")

///|
#borrow(program)
extern "c" fn epoxy_glLoadProgramNV(
  fp : CPtr,
  target : UInt,
  id : UInt,
  len : Int,
  program : Bytes,
) -> Unit = "epoxy_glLoadProgramNV"

///|
pub fn gl_load_program_nv(
  target : UInt,
  id : UInt,
  len : Int,
  program : Bytes,
) -> Unit {
  epoxy_glLoadProgramNV(d_glLoadProgramNV.get(), target, id, len, program)
}

///|
let d_glLoadTransposeMatrixd : Dispatch = Dispatch::with_aliases(
  "glLoadTransposeMatrixd",
  ["glLoadTransposeMatrixdARB"],
)

///|
#borrow(m)
extern "c" fn epoxy_glLoadTransposeMatrixd(
  fp : CPtr,
  m : FixedArray[Double],
) -> Unit = "epoxy_glLoadTransposeMatrixd"

///|
pub fn gl_load_transpose_matrixd(m : FixedArray[Double]) -> Unit {
  epoxy_glLoadTransposeMatrixd(d_glLoadTransposeMatrixd.get(), m)
}

///|
let d_glLoadTransposeMatrixdARB : Dispatch = Dispatch::with_aliases(
  "glLoadTransposeMatrixdARB",
  ["glLoadTransposeMatrixd"],
)

///|
#borrow(m)
extern "c" fn epoxy_glLoadTransposeMatrixdARB(
  fp : CPtr,
  m : FixedArray[Double],
) -> Unit = "epoxy_glLoadTransposeMatrixdARB"

///|
pub fn gl_load_transpose_matrixd_arb(m : FixedArray[Double]) -> Unit {
  epoxy_glLoadTransposeMatrixdARB(d_glLoadTransposeMatrixdARB.get(), m)
}

///|
let d_glLoadTransposeMatrixf : Dispatch = Dispatch::with_aliases(
  "glLoadTransposeMatrixf",
  ["glLoadTransposeMatrixfARB"],
)

///|
#borrow(m)
extern "c" fn epoxy_glLoadTransposeMatrixf(
  fp : CPtr,
  m : FixedArray[Float],
) -> Unit = "epoxy_glLoadTransposeMatrixf"

///|
pub fn gl_load_transpose_matrixf(m : FixedArray[Float]) -> Unit {
  epoxy_glLoadTransposeMatrixf(d_glLoadTransposeMatrixf.get(), m)
}

///|
let d_glLoadTransposeMatrixfARB : Dispatch = Dispatch::with_aliases(
  "glLoadTransposeMatrixfARB",
  ["glLoadTransposeMatrixf"],
)

///|
#borrow(m)
extern "c" fn epoxy_glLoadTransposeMatrixfARB(
  fp : CPtr,
  m : FixedArray[Float],
) -> Unit = "epoxy_glLoadTransposeMatrixfARB"

///|
pub fn gl_load_transpose_matrixf_arb(m : FixedArray[Float]) -> Unit {
  epoxy_glLoadTransposeMatrixfARB(d_glLoadTransposeMatrixfARB.get(), m)
}

///|
let d_glLoadTransposeMatrixxOES : Dispatch = Dispatch::new(
  "glLoadTransposeMatrixxOES",
)

///|
#borrow(m)
extern "c" fn epoxy_glLoadTransposeMatrixxOES(
  fp : CPtr,
  m : FixedArray[Int],
) -> Unit = "epoxy_glLoadTransposeMatrixxOES"

///|
pub fn gl_load_transpose_matrixx_oes(m : FixedArray[Int]) -> Unit {
  epoxy_glLoadTransposeMatrixxOES(d_glLoadTransposeMatrixxOES.get(), m)
}

///|
let d_glLockArraysEXT : Dispatch = Dispatch::new("glLockArraysEXT")

///|
extern "c" fn epoxy_glLockArraysEXT(
  fp : CPtr,
  first : Int,
  count : Int,
) -> Unit = "epoxy_glLockArraysEXT"

///|
pub fn gl_lock_arrays_ext(first : Int, count : Int) -> Unit {
  epoxy_glLockArraysEXT(d_glLockArraysEXT.get(), first, count)
}

///|
let d_glLogicOp : Dispatch = Dispatch::new("glLogicOp")

///|
extern "c" fn epoxy_glLogicOp(fp : CPtr, opcode : UInt) -> Unit = "epoxy_glLogicOp"

///|
pub fn gl_logic_op(opcode : UInt) -> Unit {
  epoxy_glLogicOp(d_glLogicOp.get(), opcode)
}

///|
let d_glMakeBufferNonResidentNV : Dispatch = Dispatch::new(
  "glMakeBufferNonResidentNV",
)

///|
extern "c" fn epoxy_glMakeBufferNonResidentNV(fp : CPtr, target : UInt) -> Unit = "epoxy_glMakeBufferNonResidentNV"

///|
pub fn gl_make_buffer_non_resident_nv(target : UInt) -> Unit {
  epoxy_glMakeBufferNonResidentNV(d_glMakeBufferNonResidentNV.get(), target)
}

///|
let d_glMakeBufferResidentNV : Dispatch = Dispatch::new(
  "glMakeBufferResidentNV",
)

///|
extern "c" fn epoxy_glMakeBufferResidentNV(
  fp : CPtr,
  target : UInt,
  access : UInt,
) -> Unit = "epoxy_glMakeBufferResidentNV"

///|
pub fn gl_make_buffer_resident_nv(target : UInt, access : UInt) -> Unit {
  epoxy_glMakeBufferResidentNV(d_glMakeBufferResidentNV.get(), target, access)
}

///|
let d_glMakeImageHandleNonResidentARB : Dispatch = Dispatch::new(
  "glMakeImageHandleNonResidentARB",
)

///|
extern "c" fn epoxy_glMakeImageHandleNonResidentARB(
  fp : CPtr,
  handle : UInt64,
) -> Unit = "epoxy_glMakeImageHandleNonResidentARB"

///|
pub fn gl_make_image_handle_non_resident_arb(handle : UInt64) -> Unit {
  epoxy_glMakeImageHandleNonResidentARB(
    d_glMakeImageHandleNonResidentARB.get(),
    handle,
  )
}

///|
let d_glMakeImageHandleNonResidentNV : Dispatch = Dispatch::new(
  "glMakeImageHandleNonResidentNV",
)

///|
extern "c" fn epoxy_glMakeImageHandleNonResidentNV(
  fp : CPtr,
  handle : UInt64,
) -> Unit = "epoxy_glMakeImageHandleNonResidentNV"

///|
pub fn gl_make_image_handle_non_resident_nv(handle : UInt64) -> Unit {
  epoxy_glMakeImageHandleNonResidentNV(
    d_glMakeImageHandleNonResidentNV.get(),
    handle,
  )
}

///|
let d_glMakeImageHandleResidentARB : Dispatch = Dispatch::new(
  "glMakeImageHandleResidentARB",
)

///|
extern "c" fn epoxy_glMakeImageHandleResidentARB(
  fp : CPtr,
  handle : UInt64,
  access : UInt,
) -> Unit = "epoxy_glMakeImageHandleResidentARB"

///|
pub fn gl_make_image_handle_resident_arb(
  handle : UInt64,
  access : UInt,
) -> Unit {
  epoxy_glMakeImageHandleResidentARB(
    d_glMakeImageHandleResidentARB.get(),
    handle,
    access,
  )
}

///|
let d_glMakeImageHandleResidentNV : Dispatch = Dispatch::new(
  "glMakeImageHandleResidentNV",
)

///|
extern "c" fn epoxy_glMakeImageHandleResidentNV(
  fp : CPtr,
  handle : UInt64,
  access : UInt,
) -> Unit = "epoxy_glMakeImageHandleResidentNV"

///|
pub fn gl_make_image_handle_resident_nv(handle : UInt64, access : UInt) -> Unit {
  epoxy_glMakeImageHandleResidentNV(
    d_glMakeImageHandleResidentNV.get(),
    handle,
    access,
  )
}

///|
let d_glMakeNamedBufferNonResidentNV : Dispatch = Dispatch::new(
  "glMakeNamedBufferNonResidentNV",
)

///|
extern "c" fn epoxy_glMakeNamedBufferNonResidentNV(
  fp : CPtr,
  buffer : UInt,
) -> Unit = "epoxy_glMakeNamedBufferNonResidentNV"

///|
pub fn gl_make_named_buffer_non_resident_nv(buffer : UInt) -> Unit {
  epoxy_glMakeNamedBufferNonResidentNV(
    d_glMakeNamedBufferNonResidentNV.get(),
    buffer,
  )
}

///|
let d_glMakeNamedBufferResidentNV : Dispatch = Dispatch::new(
  "glMakeNamedBufferResidentNV",
)

///|
extern "c" fn epoxy_glMakeNamedBufferResidentNV(
  fp : CPtr,
  buffer : UInt,
  access : UInt,
) -> Unit = "epoxy_glMakeNamedBufferResidentNV"

///|
pub fn gl_make_named_buffer_resident_nv(buffer : UInt, access : UInt) -> Unit {
  epoxy_glMakeNamedBufferResidentNV(
    d_glMakeNamedBufferResidentNV.get(),
    buffer,
    access,
  )
}

///|
let d_glMakeTextureHandleNonResidentARB : Dispatch = Dispatch::new(
  "glMakeTextureHandleNonResidentARB",
)

///|
extern "c" fn epoxy_glMakeTextureHandleNonResidentARB(
  fp : CPtr,
  handle : UInt64,
) -> Unit = "epoxy_glMakeTextureHandleNonResidentARB"

///|
pub fn gl_make_texture_handle_non_resident_arb(handle : UInt64) -> Unit {
  epoxy_glMakeTextureHandleNonResidentARB(
    d_glMakeTextureHandleNonResidentARB.get(),
    handle,
  )
}

///|
let d_glMakeTextureHandleNonResidentNV : Dispatch = Dispatch::new(
  "glMakeTextureHandleNonResidentNV",
)

///|
extern "c" fn epoxy_glMakeTextureHandleNonResidentNV(
  fp : CPtr,
  handle : UInt64,
) -> Unit = "epoxy_glMakeTextureHandleNonResidentNV"

///|
pub fn gl_make_texture_handle_non_resident_nv(handle : UInt64) -> Unit {
  epoxy_glMakeTextureHandleNonResidentNV(
    d_glMakeTextureHandleNonResidentNV.get(),
    handle,
  )
}

///|
let d_glMakeTextureHandleResidentARB : Dispatch = Dispatch::new(
  "glMakeTextureHandleResidentARB",
)

///|
extern "c" fn epoxy_glMakeTextureHandleResidentARB(
  fp : CPtr,
  handle : UInt64,
) -> Unit = "epoxy_glMakeTextureHandleResidentARB"

///|
pub fn gl_make_texture_handle_resident_arb(handle : UInt64) -> Unit {
  epoxy_glMakeTextureHandleResidentARB(
    d_glMakeTextureHandleResidentARB.get(),
    handle,
  )
}

///|
let d_glMakeTextureHandleResidentNV : Dispatch = Dispatch::new(
  "glMakeTextureHandleResidentNV",
)

///|
extern "c" fn epoxy_glMakeTextureHandleResidentNV(
  fp : CPtr,
  handle : UInt64,
) -> Unit = "epoxy_glMakeTextureHandleResidentNV"

///|
pub fn gl_make_texture_handle_resident_nv(handle : UInt64) -> Unit {
  epoxy_glMakeTextureHandleResidentNV(
    d_glMakeTextureHandleResidentNV.get(),
    handle,
  )
}

///|
let d_glMap1d : Dispatch = Dispatch::new("glMap1d")

///|
#borrow(points)
extern "c" fn epoxy_glMap1d(
  fp : CPtr,
  target : UInt,
  u1 : Double,
  u2 : Double,
  stride : Int,
  order : Int,
  points : FixedArray[Double],
) -> Unit = "epoxy_glMap1d"

///|
pub fn gl_map1d(
  target : UInt,
  u1 : Double,
  u2 : Double,
  stride : Int,
  order : Int,
  points : FixedArray[Double],
) -> Unit {
  epoxy_glMap1d(d_glMap1d.get(), target, u1, u2, stride, order, points)
}

///|
let d_glMap1f : Dispatch = Dispatch::new("glMap1f")

///|
#borrow(points)
extern "c" fn epoxy_glMap1f(
  fp : CPtr,
  target : UInt,
  u1 : Float,
  u2 : Float,
  stride : Int,
  order : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glMap1f"

///|
pub fn gl_map1f(
  target : UInt,
  u1 : Float,
  u2 : Float,
  stride : Int,
  order : Int,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glMap1f(d_glMap1f.get(), target, u1, u2, stride, order, points)
}

///|
let d_glMap1xOES : Dispatch = Dispatch::new("glMap1xOES")

///|
extern "c" fn epoxy_glMap1xOES(
  fp : CPtr,
  target : UInt,
  u1 : Int,
  u2 : Int,
  stride : Int,
  order : Int,
  points : Int,
) -> Unit = "epoxy_glMap1xOES"

///|
pub fn gl_map1x_oes(
  target : UInt,
  u1 : Int,
  u2 : Int,
  stride : Int,
  order : Int,
  points : Int,
) -> Unit {
  epoxy_glMap1xOES(d_glMap1xOES.get(), target, u1, u2, stride, order, points)
}

///|
let d_glMap2d : Dispatch = Dispatch::new("glMap2d")

///|
#borrow(points)
extern "c" fn epoxy_glMap2d(
  fp : CPtr,
  target : UInt,
  u1 : Double,
  u2 : Double,
  ustride : Int,
  uorder : Int,
  v1 : Double,
  v2 : Double,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Double],
) -> Unit = "epoxy_glMap2d"

///|
pub fn gl_map2d(
  target : UInt,
  u1 : Double,
  u2 : Double,
  ustride : Int,
  uorder : Int,
  v1 : Double,
  v2 : Double,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Double],
) -> Unit {
  epoxy_glMap2d(
    d_glMap2d.get(),
    target,
    u1,
    u2,
    ustride,
    uorder,
    v1,
    v2,
    vstride,
    vorder,
    points,
  )
}

///|
let d_glMap2f : Dispatch = Dispatch::new("glMap2f")

///|
#borrow(points)
extern "c" fn epoxy_glMap2f(
  fp : CPtr,
  target : UInt,
  u1 : Float,
  u2 : Float,
  ustride : Int,
  uorder : Int,
  v1 : Float,
  v2 : Float,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glMap2f"

///|
pub fn gl_map2f(
  target : UInt,
  u1 : Float,
  u2 : Float,
  ustride : Int,
  uorder : Int,
  v1 : Float,
  v2 : Float,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glMap2f(
    d_glMap2f.get(),
    target,
    u1,
    u2,
    ustride,
    uorder,
    v1,
    v2,
    vstride,
    vorder,
    points,
  )
}

///|
let d_glMap2xOES : Dispatch = Dispatch::new("glMap2xOES")

///|
extern "c" fn epoxy_glMap2xOES(
  fp : CPtr,
  target : UInt,
  u1 : Int,
  u2 : Int,
  ustride : Int,
  uorder : Int,
  v1 : Int,
  v2 : Int,
  vstride : Int,
  vorder : Int,
  points : Int,
) -> Unit = "epoxy_glMap2xOES"

///|
pub fn gl_map2x_oes(
  target : UInt,
  u1 : Int,
  u2 : Int,
  ustride : Int,
  uorder : Int,
  v1 : Int,
  v2 : Int,
  vstride : Int,
  vorder : Int,
  points : Int,
) -> Unit {
  epoxy_glMap2xOES(
    d_glMap2xOES.get(),
    target,
    u1,
    u2,
    ustride,
    uorder,
    v1,
    v2,
    vstride,
    vorder,
    points,
  )
}

///|
let d_glMapControlPointsNV : Dispatch = Dispatch::new("glMapControlPointsNV")

///|
#borrow(points)
extern "c" fn epoxy_glMapControlPointsNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  type_ : UInt,
  ustride : Int,
  vstride : Int,
  uorder : Int,
  vorder : Int,
  packed : Bool,
  points : Bytes,
) -> Unit = "epoxy_glMapControlPointsNV"

///|
pub fn gl_map_control_points_nv(
  target : UInt,
  index : UInt,
  type_ : UInt,
  ustride : Int,
  vstride : Int,
  uorder : Int,
  vorder : Int,
  packed : Bool,
  points : Bytes,
) -> Unit {
  epoxy_glMapControlPointsNV(
    d_glMapControlPointsNV.get(),
    target,
    index,
    type_,
    ustride,
    vstride,
    uorder,
    vorder,
    packed,
    points,
  )
}

///|
let d_glMapGrid1d : Dispatch = Dispatch::new("glMapGrid1d")

///|
extern "c" fn epoxy_glMapGrid1d(
  fp : CPtr,
  un : Int,
  u1 : Double,
  u2 : Double,
) -> Unit = "epoxy_glMapGrid1d"

///|
pub fn gl_map_grid1d(un : Int, u1 : Double, u2 : Double) -> Unit {
  epoxy_glMapGrid1d(d_glMapGrid1d.get(), un, u1, u2)
}

///|
let d_glMapGrid1f : Dispatch = Dispatch::new("glMapGrid1f")

///|
extern "c" fn epoxy_glMapGrid1f(
  fp : CPtr,
  un : Int,
  u1 : Float,
  u2 : Float,
) -> Unit = "epoxy_glMapGrid1f"

///|
pub fn gl_map_grid1f(un : Int, u1 : Float, u2 : Float) -> Unit {
  epoxy_glMapGrid1f(d_glMapGrid1f.get(), un, u1, u2)
}

///|
let d_glMapGrid1xOES : Dispatch = Dispatch::new("glMapGrid1xOES")

///|
extern "c" fn epoxy_glMapGrid1xOES(
  fp : CPtr,
  n : Int,
  u1 : Int,
  u2 : Int,
) -> Unit = "epoxy_glMapGrid1xOES"

///|
pub fn gl_map_grid1x_oes(n : Int, u1 : Int, u2 : Int) -> Unit {
  epoxy_glMapGrid1xOES(d_glMapGrid1xOES.get(), n, u1, u2)
}

///|
let d_glMapGrid2d : Dispatch = Dispatch::new("glMapGrid2d")

///|
extern "c" fn epoxy_glMapGrid2d(
  fp : CPtr,
  un : Int,
  u1 : Double,
  u2 : Double,
  vn : Int,
  v1 : Double,
  v2 : Double,
) -> Unit = "epoxy_glMapGrid2d"

///|
pub fn gl_map_grid2d(
  un : Int,
  u1 : Double,
  u2 : Double,
  vn : Int,
  v1 : Double,
  v2 : Double,
) -> Unit {
  epoxy_glMapGrid2d(d_glMapGrid2d.get(), un, u1, u2, vn, v1, v2)
}

///|
let d_glMapGrid2f : Dispatch = Dispatch::new("glMapGrid2f")

///|
extern "c" fn epoxy_glMapGrid2f(
  fp : CPtr,
  un : Int,
  u1 : Float,
  u2 : Float,
  vn : Int,
  v1 : Float,
  v2 : Float,
) -> Unit = "epoxy_glMapGrid2f"

///|
pub fn gl_map_grid2f(
  un : Int,
  u1 : Float,
  u2 : Float,
  vn : Int,
  v1 : Float,
  v2 : Float,
) -> Unit {
  epoxy_glMapGrid2f(d_glMapGrid2f.get(), un, u1, u2, vn, v1, v2)
}

///|
let d_glMapGrid2xOES : Dispatch = Dispatch::new("glMapGrid2xOES")

///|
extern "c" fn epoxy_glMapGrid2xOES(
  fp : CPtr,
  n : Int,
  u1 : Int,
  u2 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit = "epoxy_glMapGrid2xOES"

///|
pub fn gl_map_grid2x_oes(
  n : Int,
  u1 : Int,
  u2 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit {
  epoxy_glMapGrid2xOES(d_glMapGrid2xOES.get(), n, u1, u2, v1, v2)
}

///|
let d_glMapParameterfvNV : Dispatch = Dispatch::new("glMapParameterfvNV")

///|
#borrow(params)
extern "c" fn epoxy_glMapParameterfvNV(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glMapParameterfvNV"

///|
pub fn gl_map_parameterfv_nv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glMapParameterfvNV(d_glMapParameterfvNV.get(), target, pname, params)
}

///|
let d_glMapParameterivNV : Dispatch = Dispatch::new("glMapParameterivNV")

///|
#borrow(params)
extern "c" fn epoxy_glMapParameterivNV(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMapParameterivNV"

///|
pub fn gl_map_parameteriv_nv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMapParameterivNV(d_glMapParameterivNV.get(), target, pname, params)
}

///|
let d_glMapVertexAttrib1dAPPLE : Dispatch = Dispatch::new(
  "glMapVertexAttrib1dAPPLE",
)

///|
#borrow(points)
extern "c" fn epoxy_glMapVertexAttrib1dAPPLE(
  fp : CPtr,
  index : UInt,
  size : UInt,
  u1 : Double,
  u2 : Double,
  stride : Int,
  order : Int,
  points : FixedArray[Double],
) -> Unit = "epoxy_glMapVertexAttrib1dAPPLE"

///|
pub fn gl_map_vertex_attrib1d_apple(
  index : UInt,
  size : UInt,
  u1 : Double,
  u2 : Double,
  stride : Int,
  order : Int,
  points : FixedArray[Double],
) -> Unit {
  epoxy_glMapVertexAttrib1dAPPLE(
    d_glMapVertexAttrib1dAPPLE.get(),
    index,
    size,
    u1,
    u2,
    stride,
    order,
    points,
  )
}

///|
let d_glMapVertexAttrib1fAPPLE : Dispatch = Dispatch::new(
  "glMapVertexAttrib1fAPPLE",
)

///|
#borrow(points)
extern "c" fn epoxy_glMapVertexAttrib1fAPPLE(
  fp : CPtr,
  index : UInt,
  size : UInt,
  u1 : Float,
  u2 : Float,
  stride : Int,
  order : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glMapVertexAttrib1fAPPLE"

///|
pub fn gl_map_vertex_attrib1f_apple(
  index : UInt,
  size : UInt,
  u1 : Float,
  u2 : Float,
  stride : Int,
  order : Int,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glMapVertexAttrib1fAPPLE(
    d_glMapVertexAttrib1fAPPLE.get(),
    index,
    size,
    u1,
    u2,
    stride,
    order,
    points,
  )
}

///|
let d_glMapVertexAttrib2dAPPLE : Dispatch = Dispatch::new(
  "glMapVertexAttrib2dAPPLE",
)

///|
#borrow(points)
extern "c" fn epoxy_glMapVertexAttrib2dAPPLE(
  fp : CPtr,
  index : UInt,
  size : UInt,
  u1 : Double,
  u2 : Double,
  ustride : Int,
  uorder : Int,
  v1 : Double,
  v2 : Double,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Double],
) -> Unit = "epoxy_glMapVertexAttrib2dAPPLE"

///|
pub fn gl_map_vertex_attrib2d_apple(
  index : UInt,
  size : UInt,
  u1 : Double,
  u2 : Double,
  ustride : Int,
  uorder : Int,
  v1 : Double,
  v2 : Double,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Double],
) -> Unit {
  epoxy_glMapVertexAttrib2dAPPLE(
    d_glMapVertexAttrib2dAPPLE.get(),
    index,
    size,
    u1,
    u2,
    ustride,
    uorder,
    v1,
    v2,
    vstride,
    vorder,
    points,
  )
}

///|
let d_glMapVertexAttrib2fAPPLE : Dispatch = Dispatch::new(
  "glMapVertexAttrib2fAPPLE",
)

///|
#borrow(points)
extern "c" fn epoxy_glMapVertexAttrib2fAPPLE(
  fp : CPtr,
  index : UInt,
  size : UInt,
  u1 : Float,
  u2 : Float,
  ustride : Int,
  uorder : Int,
  v1 : Float,
  v2 : Float,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glMapVertexAttrib2fAPPLE"

///|
pub fn gl_map_vertex_attrib2f_apple(
  index : UInt,
  size : UInt,
  u1 : Float,
  u2 : Float,
  ustride : Int,
  uorder : Int,
  v1 : Float,
  v2 : Float,
  vstride : Int,
  vorder : Int,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glMapVertexAttrib2fAPPLE(
    d_glMapVertexAttrib2fAPPLE.get(),
    index,
    size,
    u1,
    u2,
    ustride,
    uorder,
    v1,
    v2,
    vstride,
    vorder,
    points,
  )
}

///|
let d_glMaterialf : Dispatch = Dispatch::new("glMaterialf")

///|
extern "c" fn epoxy_glMaterialf(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glMaterialf"

///|
pub fn gl_materialf(face : UInt, pname : UInt, param : Float) -> Unit {
  epoxy_glMaterialf(d_glMaterialf.get(), face, pname, param)
}

///|
let d_glMaterialfv : Dispatch = Dispatch::new("glMaterialfv")

///|
#borrow(params)
extern "c" fn epoxy_glMaterialfv(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glMaterialfv"

///|
pub fn gl_materialfv(
  face : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glMaterialfv(d_glMaterialfv.get(), face, pname, params)
}

///|
let d_glMateriali : Dispatch = Dispatch::new("glMateriali")

///|
extern "c" fn epoxy_glMateriali(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glMateriali"

///|
pub fn gl_materiali(face : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glMateriali(d_glMateriali.get(), face, pname, param)
}

///|
let d_glMaterialiv : Dispatch = Dispatch::new("glMaterialiv")

///|
#borrow(params)
extern "c" fn epoxy_glMaterialiv(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMaterialiv"

///|
pub fn gl_materialiv(
  face : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMaterialiv(d_glMaterialiv.get(), face, pname, params)
}

///|
let d_glMaterialx : Dispatch = Dispatch::new("glMaterialx")

///|
extern "c" fn epoxy_glMaterialx(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glMaterialx"

///|
pub fn gl_materialx(face : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glMaterialx(d_glMaterialx.get(), face, pname, param)
}

///|
let d_glMaterialxOES : Dispatch = Dispatch::new("glMaterialxOES")

///|
extern "c" fn epoxy_glMaterialxOES(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glMaterialxOES"

///|
pub fn gl_materialx_oes(face : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glMaterialxOES(d_glMaterialxOES.get(), face, pname, param)
}

///|
let d_glMaterialxv : Dispatch = Dispatch::new("glMaterialxv")

///|
#borrow(param)
extern "c" fn epoxy_glMaterialxv(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glMaterialxv"

///|
pub fn gl_materialxv(
  face : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glMaterialxv(d_glMaterialxv.get(), face, pname, param)
}

///|
let d_glMaterialxvOES : Dispatch = Dispatch::new("glMaterialxvOES")

///|
#borrow(param)
extern "c" fn epoxy_glMaterialxvOES(
  fp : CPtr,
  face : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glMaterialxvOES"

///|
pub fn gl_materialxv_oes(
  face : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glMaterialxvOES(d_glMaterialxvOES.get(), face, pname, param)
}

///|
let d_glMatrixFrustumEXT : Dispatch = Dispatch::new("glMatrixFrustumEXT")

///|
extern "c" fn epoxy_glMatrixFrustumEXT(
  fp : CPtr,
  mode : UInt,
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit = "epoxy_glMatrixFrustumEXT"

///|
pub fn gl_matrix_frustum_ext(
  mode : UInt,
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit {
  epoxy_glMatrixFrustumEXT(
    d_glMatrixFrustumEXT.get(),
    mode,
    left,
    right,
    bottom,
    top,
    zNear,
    zFar,
  )
}

///|
let d_glMatrixIndexPointerARB : Dispatch = Dispatch::new(
  "glMatrixIndexPointerARB",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glMatrixIndexPointerARB(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glMatrixIndexPointerARB"

///|
pub fn gl_matrix_index_pointer_arb(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glMatrixIndexPointerARB(
    d_glMatrixIndexPointerARB.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glMatrixIndexPointerOES : Dispatch = Dispatch::new(
  "glMatrixIndexPointerOES",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glMatrixIndexPointerOES(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glMatrixIndexPointerOES"

///|
pub fn gl_matrix_index_pointer_oes(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glMatrixIndexPointerOES(
    d_glMatrixIndexPointerOES.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glMatrixIndexubvARB : Dispatch = Dispatch::new("glMatrixIndexubvARB")

///|
#borrow(indices)
extern "c" fn epoxy_glMatrixIndexubvARB(
  fp : CPtr,
  size : Int,
  indices : Bytes,
) -> Unit = "epoxy_glMatrixIndexubvARB"

///|
pub fn gl_matrix_indexubv_arb(size : Int, indices : Bytes) -> Unit {
  epoxy_glMatrixIndexubvARB(d_glMatrixIndexubvARB.get(), size, indices)
}

///|
let d_glMatrixIndexuivARB : Dispatch = Dispatch::new("glMatrixIndexuivARB")

///|
#borrow(indices)
extern "c" fn epoxy_glMatrixIndexuivARB(
  fp : CPtr,
  size : Int,
  indices : FixedArray[UInt],
) -> Unit = "epoxy_glMatrixIndexuivARB"

///|
pub fn gl_matrix_indexuiv_arb(size : Int, indices : FixedArray[UInt]) -> Unit {
  epoxy_glMatrixIndexuivARB(d_glMatrixIndexuivARB.get(), size, indices)
}

///|
let d_glMatrixIndexusvARB : Dispatch = Dispatch::new("glMatrixIndexusvARB")

///|
#borrow(indices)
extern "c" fn epoxy_glMatrixIndexusvARB(
  fp : CPtr,
  size : Int,
  indices : FixedArray[UInt16],
) -> Unit = "epoxy_glMatrixIndexusvARB"

///|
pub fn gl_matrix_indexusv_arb(size : Int, indices : FixedArray[UInt16]) -> Unit {
  epoxy_glMatrixIndexusvARB(d_glMatrixIndexusvARB.get(), size, indices)
}

///|
let d_glMatrixLoad3x2fNV : Dispatch = Dispatch::new("glMatrixLoad3x2fNV")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixLoad3x2fNV(
  fp : CPtr,
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixLoad3x2fNV"

///|
pub fn gl_matrix_load3x2f_nv(matrixMode : UInt, m : FixedArray[Float]) -> Unit {
  epoxy_glMatrixLoad3x2fNV(d_glMatrixLoad3x2fNV.get(), matrixMode, m)
}

///|
let d_glMatrixLoad3x3fNV : Dispatch = Dispatch::new("glMatrixLoad3x3fNV")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixLoad3x3fNV(
  fp : CPtr,
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixLoad3x3fNV"

///|
pub fn gl_matrix_load3x3f_nv(matrixMode : UInt, m : FixedArray[Float]) -> Unit {
  epoxy_glMatrixLoad3x3fNV(d_glMatrixLoad3x3fNV.get(), matrixMode, m)
}

///|
let d_glMatrixLoadIdentityEXT : Dispatch = Dispatch::new(
  "glMatrixLoadIdentityEXT",
)

///|
extern "c" fn epoxy_glMatrixLoadIdentityEXT(fp : CPtr, mode : UInt) -> Unit = "epoxy_glMatrixLoadIdentityEXT"

///|
pub fn gl_matrix_load_identity_ext(mode : UInt) -> Unit {
  epoxy_glMatrixLoadIdentityEXT(d_glMatrixLoadIdentityEXT.get(), mode)
}

///|
let d_glMatrixLoadTranspose3x3fNV : Dispatch = Dispatch::new(
  "glMatrixLoadTranspose3x3fNV",
)

///|
#borrow(m)
extern "c" fn epoxy_glMatrixLoadTranspose3x3fNV(
  fp : CPtr,
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixLoadTranspose3x3fNV"

///|
pub fn gl_matrix_load_transpose3x3f_nv(
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit {
  epoxy_glMatrixLoadTranspose3x3fNV(
    d_glMatrixLoadTranspose3x3fNV.get(),
    matrixMode,
    m,
  )
}

///|
let d_glMatrixLoadTransposedEXT : Dispatch = Dispatch::new(
  "glMatrixLoadTransposedEXT",
)

///|
#borrow(m)
extern "c" fn epoxy_glMatrixLoadTransposedEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Double],
) -> Unit = "epoxy_glMatrixLoadTransposedEXT"

///|
pub fn gl_matrix_load_transposed_ext(
  mode : UInt,
  m : FixedArray[Double],
) -> Unit {
  epoxy_glMatrixLoadTransposedEXT(d_glMatrixLoadTransposedEXT.get(), mode, m)
}

///|
let d_glMatrixLoadTransposefEXT : Dispatch = Dispatch::new(
  "glMatrixLoadTransposefEXT",
)

///|
#borrow(m)
extern "c" fn epoxy_glMatrixLoadTransposefEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixLoadTransposefEXT"

///|
pub fn gl_matrix_load_transposef_ext(
  mode : UInt,
  m : FixedArray[Float],
) -> Unit {
  epoxy_glMatrixLoadTransposefEXT(d_glMatrixLoadTransposefEXT.get(), mode, m)
}

///|
let d_glMatrixLoaddEXT : Dispatch = Dispatch::new("glMatrixLoaddEXT")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixLoaddEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Double],
) -> Unit = "epoxy_glMatrixLoaddEXT"

///|
pub fn gl_matrix_loadd_ext(mode : UInt, m : FixedArray[Double]) -> Unit {
  epoxy_glMatrixLoaddEXT(d_glMatrixLoaddEXT.get(), mode, m)
}

///|
let d_glMatrixLoadfEXT : Dispatch = Dispatch::new("glMatrixLoadfEXT")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixLoadfEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixLoadfEXT"

///|
pub fn gl_matrix_loadf_ext(mode : UInt, m : FixedArray[Float]) -> Unit {
  epoxy_glMatrixLoadfEXT(d_glMatrixLoadfEXT.get(), mode, m)
}

///|
let d_glMatrixMode : Dispatch = Dispatch::new("glMatrixMode")

///|
extern "c" fn epoxy_glMatrixMode(fp : CPtr, mode : UInt) -> Unit = "epoxy_glMatrixMode"

///|
pub fn gl_matrix_mode(mode : UInt) -> Unit {
  epoxy_glMatrixMode(d_glMatrixMode.get(), mode)
}

///|
let d_glMatrixMult3x2fNV : Dispatch = Dispatch::new("glMatrixMult3x2fNV")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixMult3x2fNV(
  fp : CPtr,
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixMult3x2fNV"

///|
pub fn gl_matrix_mult3x2f_nv(matrixMode : UInt, m : FixedArray[Float]) -> Unit {
  epoxy_glMatrixMult3x2fNV(d_glMatrixMult3x2fNV.get(), matrixMode, m)
}

///|
let d_glMatrixMult3x3fNV : Dispatch = Dispatch::new("glMatrixMult3x3fNV")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixMult3x3fNV(
  fp : CPtr,
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixMult3x3fNV"

///|
pub fn gl_matrix_mult3x3f_nv(matrixMode : UInt, m : FixedArray[Float]) -> Unit {
  epoxy_glMatrixMult3x3fNV(d_glMatrixMult3x3fNV.get(), matrixMode, m)
}

///|
let d_glMatrixMultTranspose3x3fNV : Dispatch = Dispatch::new(
  "glMatrixMultTranspose3x3fNV",
)

///|
#borrow(m)
extern "c" fn epoxy_glMatrixMultTranspose3x3fNV(
  fp : CPtr,
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixMultTranspose3x3fNV"

///|
pub fn gl_matrix_mult_transpose3x3f_nv(
  matrixMode : UInt,
  m : FixedArray[Float],
) -> Unit {
  epoxy_glMatrixMultTranspose3x3fNV(
    d_glMatrixMultTranspose3x3fNV.get(),
    matrixMode,
    m,
  )
}

///|
let d_glMatrixMultTransposedEXT : Dispatch = Dispatch::new(
  "glMatrixMultTransposedEXT",
)

///|
#borrow(m)
extern "c" fn epoxy_glMatrixMultTransposedEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Double],
) -> Unit = "epoxy_glMatrixMultTransposedEXT"

///|
pub fn gl_matrix_mult_transposed_ext(
  mode : UInt,
  m : FixedArray[Double],
) -> Unit {
  epoxy_glMatrixMultTransposedEXT(d_glMatrixMultTransposedEXT.get(), mode, m)
}

///|
let d_glMatrixMultTransposefEXT : Dispatch = Dispatch::new(
  "glMatrixMultTransposefEXT",
)

///|
#borrow(m)
extern "c" fn epoxy_glMatrixMultTransposefEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixMultTransposefEXT"

///|
pub fn gl_matrix_mult_transposef_ext(
  mode : UInt,
  m : FixedArray[Float],
) -> Unit {
  epoxy_glMatrixMultTransposefEXT(d_glMatrixMultTransposefEXT.get(), mode, m)
}

///|
let d_glMatrixMultdEXT : Dispatch = Dispatch::new("glMatrixMultdEXT")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixMultdEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Double],
) -> Unit = "epoxy_glMatrixMultdEXT"

///|
pub fn gl_matrix_multd_ext(mode : UInt, m : FixedArray[Double]) -> Unit {
  epoxy_glMatrixMultdEXT(d_glMatrixMultdEXT.get(), mode, m)
}

///|
let d_glMatrixMultfEXT : Dispatch = Dispatch::new("glMatrixMultfEXT")

///|
#borrow(m)
extern "c" fn epoxy_glMatrixMultfEXT(
  fp : CPtr,
  mode : UInt,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMatrixMultfEXT"

///|
pub fn gl_matrix_multf_ext(mode : UInt, m : FixedArray[Float]) -> Unit {
  epoxy_glMatrixMultfEXT(d_glMatrixMultfEXT.get(), mode, m)
}

///|
let d_glMatrixOrthoEXT : Dispatch = Dispatch::new("glMatrixOrthoEXT")

///|
extern "c" fn epoxy_glMatrixOrthoEXT(
  fp : CPtr,
  mode : UInt,
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit = "epoxy_glMatrixOrthoEXT"

///|
pub fn gl_matrix_ortho_ext(
  mode : UInt,
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit {
  epoxy_glMatrixOrthoEXT(
    d_glMatrixOrthoEXT.get(),
    mode,
    left,
    right,
    bottom,
    top,
    zNear,
    zFar,
  )
}

///|
let d_glMatrixPopEXT : Dispatch = Dispatch::new("glMatrixPopEXT")

///|
extern "c" fn epoxy_glMatrixPopEXT(fp : CPtr, mode : UInt) -> Unit = "epoxy_glMatrixPopEXT"

///|
pub fn gl_matrix_pop_ext(mode : UInt) -> Unit {
  epoxy_glMatrixPopEXT(d_glMatrixPopEXT.get(), mode)
}

///|
let d_glMatrixPushEXT : Dispatch = Dispatch::new("glMatrixPushEXT")

///|
extern "c" fn epoxy_glMatrixPushEXT(fp : CPtr, mode : UInt) -> Unit = "epoxy_glMatrixPushEXT"

///|
pub fn gl_matrix_push_ext(mode : UInt) -> Unit {
  epoxy_glMatrixPushEXT(d_glMatrixPushEXT.get(), mode)
}

///|
let d_glMatrixRotatedEXT : Dispatch = Dispatch::new("glMatrixRotatedEXT")

///|
extern "c" fn epoxy_glMatrixRotatedEXT(
  fp : CPtr,
  mode : UInt,
  angle : Double,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glMatrixRotatedEXT"

///|
pub fn gl_matrix_rotated_ext(
  mode : UInt,
  angle : Double,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glMatrixRotatedEXT(d_glMatrixRotatedEXT.get(), mode, angle, x, y, z)
}

///|
let d_glMatrixRotatefEXT : Dispatch = Dispatch::new("glMatrixRotatefEXT")

///|
extern "c" fn epoxy_glMatrixRotatefEXT(
  fp : CPtr,
  mode : UInt,
  angle : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glMatrixRotatefEXT"

///|
pub fn gl_matrix_rotatef_ext(
  mode : UInt,
  angle : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glMatrixRotatefEXT(d_glMatrixRotatefEXT.get(), mode, angle, x, y, z)
}

///|
let d_glMatrixScaledEXT : Dispatch = Dispatch::new("glMatrixScaledEXT")

///|
extern "c" fn epoxy_glMatrixScaledEXT(
  fp : CPtr,
  mode : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glMatrixScaledEXT"

///|
pub fn gl_matrix_scaled_ext(
  mode : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glMatrixScaledEXT(d_glMatrixScaledEXT.get(), mode, x, y, z)
}

///|
let d_glMatrixScalefEXT : Dispatch = Dispatch::new("glMatrixScalefEXT")

///|
extern "c" fn epoxy_glMatrixScalefEXT(
  fp : CPtr,
  mode : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glMatrixScalefEXT"

///|
pub fn gl_matrix_scalef_ext(
  mode : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glMatrixScalefEXT(d_glMatrixScalefEXT.get(), mode, x, y, z)
}

///|
let d_glMatrixTranslatedEXT : Dispatch = Dispatch::new("glMatrixTranslatedEXT")

///|
extern "c" fn epoxy_glMatrixTranslatedEXT(
  fp : CPtr,
  mode : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glMatrixTranslatedEXT"

///|
pub fn gl_matrix_translated_ext(
  mode : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glMatrixTranslatedEXT(d_glMatrixTranslatedEXT.get(), mode, x, y, z)
}

///|
let d_glMatrixTranslatefEXT : Dispatch = Dispatch::new("glMatrixTranslatefEXT")

///|
extern "c" fn epoxy_glMatrixTranslatefEXT(
  fp : CPtr,
  mode : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glMatrixTranslatefEXT"

///|
pub fn gl_matrix_translatef_ext(
  mode : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glMatrixTranslatefEXT(d_glMatrixTranslatefEXT.get(), mode, x, y, z)
}

///|
let d_glMaxActiveShaderCoresARM : Dispatch = Dispatch::new(
  "glMaxActiveShaderCoresARM",
)

///|
extern "c" fn epoxy_glMaxActiveShaderCoresARM(fp : CPtr, count : UInt) -> Unit = "epoxy_glMaxActiveShaderCoresARM"

///|
pub fn gl_max_active_shader_cores_arm(count : UInt) -> Unit {
  epoxy_glMaxActiveShaderCoresARM(d_glMaxActiveShaderCoresARM.get(), count)
}

///|
let d_glMaxShaderCompilerThreadsKHR : Dispatch = Dispatch::with_aliases(
  "glMaxShaderCompilerThreadsKHR",
  ["glMaxShaderCompilerThreadsARB"],
)

///|
extern "c" fn epoxy_glMaxShaderCompilerThreadsKHR(
  fp : CPtr,
  count : UInt,
) -> Unit = "epoxy_glMaxShaderCompilerThreadsKHR"

///|
pub fn gl_max_shader_compiler_threads_khr(count : UInt) -> Unit {
  epoxy_glMaxShaderCompilerThreadsKHR(
    d_glMaxShaderCompilerThreadsKHR.get(),
    count,
  )
}

///|
let d_glMaxShaderCompilerThreadsARB : Dispatch = Dispatch::with_aliases(
  "glMaxShaderCompilerThreadsARB",
  ["glMaxShaderCompilerThreadsKHR"],
)

///|
extern "c" fn epoxy_glMaxShaderCompilerThreadsARB(
  fp : CPtr,
  count : UInt,
) -> Unit = "epoxy_glMaxShaderCompilerThreadsARB"

///|
pub fn gl_max_shader_compiler_threads_arb(count : UInt) -> Unit {
  epoxy_glMaxShaderCompilerThreadsARB(
    d_glMaxShaderCompilerThreadsARB.get(),
    count,
  )
}

///|
let d_glMemoryBarrier : Dispatch = Dispatch::with_aliases("glMemoryBarrier", [
  "glMemoryBarrierEXT",
])

///|
extern "c" fn epoxy_glMemoryBarrier(fp : CPtr, barriers : UInt) -> Unit = "epoxy_glMemoryBarrier"

///|
pub fn gl_memory_barrier(barriers : UInt) -> Unit {
  epoxy_glMemoryBarrier(d_glMemoryBarrier.get(), barriers)
}

///|
let d_glMemoryBarrierByRegion : Dispatch = Dispatch::new(
  "glMemoryBarrierByRegion",
)

///|
extern "c" fn epoxy_glMemoryBarrierByRegion(fp : CPtr, barriers : UInt) -> Unit = "epoxy_glMemoryBarrierByRegion"

///|
pub fn gl_memory_barrier_by_region(barriers : UInt) -> Unit {
  epoxy_glMemoryBarrierByRegion(d_glMemoryBarrierByRegion.get(), barriers)
}

///|
let d_glMemoryBarrierEXT : Dispatch = Dispatch::with_aliases(
  "glMemoryBarrierEXT",
  ["glMemoryBarrier"],
)

///|
extern "c" fn epoxy_glMemoryBarrierEXT(fp : CPtr, barriers : UInt) -> Unit = "epoxy_glMemoryBarrierEXT"

///|
pub fn gl_memory_barrier_ext(barriers : UInt) -> Unit {
  epoxy_glMemoryBarrierEXT(d_glMemoryBarrierEXT.get(), barriers)
}

///|
let d_glMemoryObjectParameterivEXT : Dispatch = Dispatch::new(
  "glMemoryObjectParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glMemoryObjectParameterivEXT(
  fp : CPtr,
  memoryObject : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMemoryObjectParameterivEXT"

///|
pub fn gl_memory_object_parameteriv_ext(
  memoryObject : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMemoryObjectParameterivEXT(
    d_glMemoryObjectParameterivEXT.get(),
    memoryObject,
    pname,
    params,
  )
}

///|
let d_glMinSampleShading : Dispatch = Dispatch::with_aliases(
  "glMinSampleShading",
  ["glMinSampleShadingARB", "glMinSampleShadingOES"],
)

///|
extern "c" fn epoxy_glMinSampleShading(fp : CPtr, value : Float) -> Unit = "epoxy_glMinSampleShading"

///|
pub fn gl_min_sample_shading(value : Float) -> Unit {
  epoxy_glMinSampleShading(d_glMinSampleShading.get(), value)
}

///|
let d_glMinSampleShadingARB : Dispatch = Dispatch::with_aliases(
  "glMinSampleShadingARB",
  ["glMinSampleShading", "glMinSampleShadingOES"],
)

///|
extern "c" fn epoxy_glMinSampleShadingARB(fp : CPtr, value : Float) -> Unit = "epoxy_glMinSampleShadingARB"

///|
pub fn gl_min_sample_shading_arb(value : Float) -> Unit {
  epoxy_glMinSampleShadingARB(d_glMinSampleShadingARB.get(), value)
}

///|
let d_glMinSampleShadingOES : Dispatch = Dispatch::with_aliases(
  "glMinSampleShadingOES",
  ["glMinSampleShading", "glMinSampleShadingARB"],
)

///|
extern "c" fn epoxy_glMinSampleShadingOES(fp : CPtr, value : Float) -> Unit = "epoxy_glMinSampleShadingOES"

///|
pub fn gl_min_sample_shading_oes(value : Float) -> Unit {
  epoxy_glMinSampleShadingOES(d_glMinSampleShadingOES.get(), value)
}

///|
let d_glMinmax : Dispatch = Dispatch::with_aliases("glMinmax", ["glMinmaxEXT"])

///|
extern "c" fn epoxy_glMinmax(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  sink : Bool,
) -> Unit = "epoxy_glMinmax"

///|
pub fn gl_minmax(target : UInt, internalformat : UInt, sink : Bool) -> Unit {
  epoxy_glMinmax(d_glMinmax.get(), target, internalformat, sink)
}

///|
let d_glMinmaxEXT : Dispatch = Dispatch::with_aliases("glMinmaxEXT", [
  "glMinmax",
])

///|
extern "c" fn epoxy_glMinmaxEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  sink : Bool,
) -> Unit = "epoxy_glMinmaxEXT"

///|
pub fn gl_minmax_ext(target : UInt, internalformat : UInt, sink : Bool) -> Unit {
  epoxy_glMinmaxEXT(d_glMinmaxEXT.get(), target, internalformat, sink)
}

///|
let d_glMultMatrixd : Dispatch = Dispatch::new("glMultMatrixd")

///|
#borrow(m)
extern "c" fn epoxy_glMultMatrixd(fp : CPtr, m : FixedArray[Double]) -> Unit = "epoxy_glMultMatrixd"

///|
pub fn gl_mult_matrixd(m : FixedArray[Double]) -> Unit {
  epoxy_glMultMatrixd(d_glMultMatrixd.get(), m)
}

///|
let d_glMultMatrixf : Dispatch = Dispatch::new("glMultMatrixf")

///|
#borrow(m)
extern "c" fn epoxy_glMultMatrixf(fp : CPtr, m : FixedArray[Float]) -> Unit = "epoxy_glMultMatrixf"

///|
pub fn gl_mult_matrixf(m : FixedArray[Float]) -> Unit {
  epoxy_glMultMatrixf(d_glMultMatrixf.get(), m)
}

///|
let d_glMultMatrixx : Dispatch = Dispatch::new("glMultMatrixx")

///|
#borrow(m)
extern "c" fn epoxy_glMultMatrixx(fp : CPtr, m : FixedArray[Int]) -> Unit = "epoxy_glMultMatrixx"

///|
pub fn gl_mult_matrixx(m : FixedArray[Int]) -> Unit {
  epoxy_glMultMatrixx(d_glMultMatrixx.get(), m)
}

///|
let d_glMultMatrixxOES : Dispatch = Dispatch::new("glMultMatrixxOES")

///|
#borrow(m)
extern "c" fn epoxy_glMultMatrixxOES(fp : CPtr, m : FixedArray[Int]) -> Unit = "epoxy_glMultMatrixxOES"

///|
pub fn gl_mult_matrixx_oes(m : FixedArray[Int]) -> Unit {
  epoxy_glMultMatrixxOES(d_glMultMatrixxOES.get(), m)
}

///|
let d_glMultTransposeMatrixd : Dispatch = Dispatch::with_aliases(
  "glMultTransposeMatrixd",
  ["glMultTransposeMatrixdARB"],
)

///|
#borrow(m)
extern "c" fn epoxy_glMultTransposeMatrixd(
  fp : CPtr,
  m : FixedArray[Double],
) -> Unit = "epoxy_glMultTransposeMatrixd"

///|
pub fn gl_mult_transpose_matrixd(m : FixedArray[Double]) -> Unit {
  epoxy_glMultTransposeMatrixd(d_glMultTransposeMatrixd.get(), m)
}

///|
let d_glMultTransposeMatrixdARB : Dispatch = Dispatch::with_aliases(
  "glMultTransposeMatrixdARB",
  ["glMultTransposeMatrixd"],
)

///|
#borrow(m)
extern "c" fn epoxy_glMultTransposeMatrixdARB(
  fp : CPtr,
  m : FixedArray[Double],
) -> Unit = "epoxy_glMultTransposeMatrixdARB"

///|
pub fn gl_mult_transpose_matrixd_arb(m : FixedArray[Double]) -> Unit {
  epoxy_glMultTransposeMatrixdARB(d_glMultTransposeMatrixdARB.get(), m)
}

///|
let d_glMultTransposeMatrixf : Dispatch = Dispatch::with_aliases(
  "glMultTransposeMatrixf",
  ["glMultTransposeMatrixfARB"],
)

///|
#borrow(m)
extern "c" fn epoxy_glMultTransposeMatrixf(
  fp : CPtr,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMultTransposeMatrixf"

///|
pub fn gl_mult_transpose_matrixf(m : FixedArray[Float]) -> Unit {
  epoxy_glMultTransposeMatrixf(d_glMultTransposeMatrixf.get(), m)
}

///|
let d_glMultTransposeMatrixfARB : Dispatch = Dispatch::with_aliases(
  "glMultTransposeMatrixfARB",
  ["glMultTransposeMatrixf"],
)

///|
#borrow(m)
extern "c" fn epoxy_glMultTransposeMatrixfARB(
  fp : CPtr,
  m : FixedArray[Float],
) -> Unit = "epoxy_glMultTransposeMatrixfARB"

///|
pub fn gl_mult_transpose_matrixf_arb(m : FixedArray[Float]) -> Unit {
  epoxy_glMultTransposeMatrixfARB(d_glMultTransposeMatrixfARB.get(), m)
}

///|
let d_glMultTransposeMatrixxOES : Dispatch = Dispatch::new(
  "glMultTransposeMatrixxOES",
)

///|
#borrow(m)
extern "c" fn epoxy_glMultTransposeMatrixxOES(
  fp : CPtr,
  m : FixedArray[Int],
) -> Unit = "epoxy_glMultTransposeMatrixxOES"

///|
pub fn gl_mult_transpose_matrixx_oes(m : FixedArray[Int]) -> Unit {
  epoxy_glMultTransposeMatrixxOES(d_glMultTransposeMatrixxOES.get(), m)
}

///|
let d_glMultiDrawArrays : Dispatch = Dispatch::with_aliases(
  "glMultiDrawArrays",
  ["glMultiDrawArraysEXT"],
)

///|
#borrow(first, count)
extern "c" fn epoxy_glMultiDrawArrays(
  fp : CPtr,
  mode : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  drawcount : Int,
) -> Unit = "epoxy_glMultiDrawArrays"

///|
pub fn gl_multi_draw_arrays(
  mode : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  drawcount : Int,
) -> Unit {
  epoxy_glMultiDrawArrays(
    d_glMultiDrawArrays.get(),
    mode,
    first,
    count,
    drawcount,
  )
}

///|
let d_glMultiDrawArraysEXT : Dispatch = Dispatch::with_aliases(
  "glMultiDrawArraysEXT",
  ["glMultiDrawArrays"],
)

///|
#borrow(first, count)
extern "c" fn epoxy_glMultiDrawArraysEXT(
  fp : CPtr,
  mode : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
) -> Unit = "epoxy_glMultiDrawArraysEXT"

///|
pub fn gl_multi_draw_arrays_ext(
  mode : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
) -> Unit {
  epoxy_glMultiDrawArraysEXT(
    d_glMultiDrawArraysEXT.get(),
    mode,
    first,
    count,
    primcount,
  )
}

///|
let d_glMultiDrawArraysIndirect : Dispatch = Dispatch::with_aliases(
  "glMultiDrawArraysIndirect",
  ["glMultiDrawArraysIndirectAMD", "glMultiDrawArraysIndirectEXT"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawArraysIndirect(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawArraysIndirect"

///|
pub fn gl_multi_draw_arrays_indirect(
  mode : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawArraysIndirect(
    d_glMultiDrawArraysIndirect.get(),
    mode,
    indirect,
    drawcount,
    stride,
  )
}

///|
let d_glMultiDrawArraysIndirectAMD : Dispatch = Dispatch::with_aliases(
  "glMultiDrawArraysIndirectAMD",
  ["glMultiDrawArraysIndirect", "glMultiDrawArraysIndirectEXT"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawArraysIndirectAMD(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
  primcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawArraysIndirectAMD"

///|
pub fn gl_multi_draw_arrays_indirect_amd(
  mode : UInt,
  indirect : Bytes,
  primcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawArraysIndirectAMD(
    d_glMultiDrawArraysIndirectAMD.get(),
    mode,
    indirect,
    primcount,
    stride,
  )
}

///|
let d_glMultiDrawArraysIndirectBindlessCountNV : Dispatch = Dispatch::new(
  "glMultiDrawArraysIndirectBindlessCountNV",
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawArraysIndirectBindlessCountNV(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
  drawCount : Int,
  maxDrawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit = "epoxy_glMultiDrawArraysIndirectBindlessCountNV"

///|
pub fn gl_multi_draw_arrays_indirect_bindless_count_nv(
  mode : UInt,
  indirect : Bytes,
  drawCount : Int,
  maxDrawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit {
  epoxy_glMultiDrawArraysIndirectBindlessCountNV(
    d_glMultiDrawArraysIndirectBindlessCountNV.get(),
    mode,
    indirect,
    drawCount,
    maxDrawCount,
    stride,
    vertexBufferCount,
  )
}

///|
let d_glMultiDrawArraysIndirectBindlessNV : Dispatch = Dispatch::new(
  "glMultiDrawArraysIndirectBindlessNV",
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawArraysIndirectBindlessNV(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
  drawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit = "epoxy_glMultiDrawArraysIndirectBindlessNV"

///|
pub fn gl_multi_draw_arrays_indirect_bindless_nv(
  mode : UInt,
  indirect : Bytes,
  drawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit {
  epoxy_glMultiDrawArraysIndirectBindlessNV(
    d_glMultiDrawArraysIndirectBindlessNV.get(),
    mode,
    indirect,
    drawCount,
    stride,
    vertexBufferCount,
  )
}

///|
let d_glMultiDrawArraysIndirectCount : Dispatch = Dispatch::with_aliases(
  "glMultiDrawArraysIndirectCount",
  ["glMultiDrawArraysIndirectCountARB"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawArraysIndirectCount(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawArraysIndirectCount"

///|
pub fn gl_multi_draw_arrays_indirect_count(
  mode : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawArraysIndirectCount(
    d_glMultiDrawArraysIndirectCount.get(),
    mode,
    indirect,
    drawcount,
    maxdrawcount,
    stride,
  )
}

///|
let d_glMultiDrawArraysIndirectCountARB : Dispatch = Dispatch::with_aliases(
  "glMultiDrawArraysIndirectCountARB",
  ["glMultiDrawArraysIndirectCount"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawArraysIndirectCountARB(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawArraysIndirectCountARB"

///|
pub fn gl_multi_draw_arrays_indirect_count_arb(
  mode : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawArraysIndirectCountARB(
    d_glMultiDrawArraysIndirectCountARB.get(),
    mode,
    indirect,
    drawcount,
    maxdrawcount,
    stride,
  )
}

///|
let d_glMultiDrawArraysIndirectEXT : Dispatch = Dispatch::with_aliases(
  "glMultiDrawArraysIndirectEXT",
  ["glMultiDrawArraysIndirect", "glMultiDrawArraysIndirectAMD"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawArraysIndirectEXT(
  fp : CPtr,
  mode : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawArraysIndirectEXT"

///|
pub fn gl_multi_draw_arrays_indirect_ext(
  mode : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawArraysIndirectEXT(
    d_glMultiDrawArraysIndirectEXT.get(),
    mode,
    indirect,
    drawcount,
    stride,
  )
}

///|
let d_glMultiDrawElementArrayAPPLE : Dispatch = Dispatch::new(
  "glMultiDrawElementArrayAPPLE",
)

///|
#borrow(first, count)
extern "c" fn epoxy_glMultiDrawElementArrayAPPLE(
  fp : CPtr,
  mode : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
) -> Unit = "epoxy_glMultiDrawElementArrayAPPLE"

///|
pub fn gl_multi_draw_element_array_apple(
  mode : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
) -> Unit {
  epoxy_glMultiDrawElementArrayAPPLE(
    d_glMultiDrawElementArrayAPPLE.get(),
    mode,
    first,
    count,
    primcount,
  )
}

///|
let d_glMultiDrawElementsIndirect : Dispatch = Dispatch::with_aliases(
  "glMultiDrawElementsIndirect",
  ["glMultiDrawElementsIndirectAMD", "glMultiDrawElementsIndirectEXT"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawElementsIndirect(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawElementsIndirect"

///|
pub fn gl_multi_draw_elements_indirect(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawElementsIndirect(
    d_glMultiDrawElementsIndirect.get(),
    mode,
    type_,
    indirect,
    drawcount,
    stride,
  )
}

///|
let d_glMultiDrawElementsIndirectAMD : Dispatch = Dispatch::with_aliases(
  "glMultiDrawElementsIndirectAMD",
  ["glMultiDrawElementsIndirect", "glMultiDrawElementsIndirectEXT"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawElementsIndirectAMD(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  primcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawElementsIndirectAMD"

///|
pub fn gl_multi_draw_elements_indirect_amd(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  primcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawElementsIndirectAMD(
    d_glMultiDrawElementsIndirectAMD.get(),
    mode,
    type_,
    indirect,
    primcount,
    stride,
  )
}

///|
let d_glMultiDrawElementsIndirectBindlessCountNV : Dispatch = Dispatch::new(
  "glMultiDrawElementsIndirectBindlessCountNV",
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawElementsIndirectBindlessCountNV(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawCount : Int,
  maxDrawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit = "epoxy_glMultiDrawElementsIndirectBindlessCountNV"

///|
pub fn gl_multi_draw_elements_indirect_bindless_count_nv(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawCount : Int,
  maxDrawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit {
  epoxy_glMultiDrawElementsIndirectBindlessCountNV(
    d_glMultiDrawElementsIndirectBindlessCountNV.get(),
    mode,
    type_,
    indirect,
    drawCount,
    maxDrawCount,
    stride,
    vertexBufferCount,
  )
}

///|
let d_glMultiDrawElementsIndirectBindlessNV : Dispatch = Dispatch::new(
  "glMultiDrawElementsIndirectBindlessNV",
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawElementsIndirectBindlessNV(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit = "epoxy_glMultiDrawElementsIndirectBindlessNV"

///|
pub fn gl_multi_draw_elements_indirect_bindless_nv(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawCount : Int,
  stride : Int,
  vertexBufferCount : Int,
) -> Unit {
  epoxy_glMultiDrawElementsIndirectBindlessNV(
    d_glMultiDrawElementsIndirectBindlessNV.get(),
    mode,
    type_,
    indirect,
    drawCount,
    stride,
    vertexBufferCount,
  )
}

///|
let d_glMultiDrawElementsIndirectCount : Dispatch = Dispatch::with_aliases(
  "glMultiDrawElementsIndirectCount",
  ["glMultiDrawElementsIndirectCountARB"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawElementsIndirectCount(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawElementsIndirectCount"

///|
pub fn gl_multi_draw_elements_indirect_count(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawElementsIndirectCount(
    d_glMultiDrawElementsIndirectCount.get(),
    mode,
    type_,
    indirect,
    drawcount,
    maxdrawcount,
    stride,
  )
}

///|
let d_glMultiDrawElementsIndirectCountARB : Dispatch = Dispatch::with_aliases(
  "glMultiDrawElementsIndirectCountARB",
  ["glMultiDrawElementsIndirectCount"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawElementsIndirectCountARB(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawElementsIndirectCountARB"

///|
pub fn gl_multi_draw_elements_indirect_count_arb(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawElementsIndirectCountARB(
    d_glMultiDrawElementsIndirectCountARB.get(),
    mode,
    type_,
    indirect,
    drawcount,
    maxdrawcount,
    stride,
  )
}

///|
let d_glMultiDrawElementsIndirectEXT : Dispatch = Dispatch::with_aliases(
  "glMultiDrawElementsIndirectEXT",
  ["glMultiDrawElementsIndirect", "glMultiDrawElementsIndirectAMD"],
)

///|
#borrow(indirect)
extern "c" fn epoxy_glMultiDrawElementsIndirectEXT(
  fp : CPtr,
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawElementsIndirectEXT"

///|
pub fn gl_multi_draw_elements_indirect_ext(
  mode : UInt,
  type_ : UInt,
  indirect : Bytes,
  drawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawElementsIndirectEXT(
    d_glMultiDrawElementsIndirectEXT.get(),
    mode,
    type_,
    indirect,
    drawcount,
    stride,
  )
}

///|
let d_glMultiDrawMeshTasksIndirectEXT : Dispatch = Dispatch::new(
  "glMultiDrawMeshTasksIndirectEXT",
)

///|
extern "c" fn epoxy_glMultiDrawMeshTasksIndirectEXT(
  fp : CPtr,
  indirect : Int64,
  drawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawMeshTasksIndirectEXT"

///|
pub fn gl_multi_draw_mesh_tasks_indirect_ext(
  indirect : Int64,
  drawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawMeshTasksIndirectEXT(
    d_glMultiDrawMeshTasksIndirectEXT.get(),
    indirect,
    drawcount,
    stride,
  )
}

///|
let d_glMultiDrawMeshTasksIndirectNV : Dispatch = Dispatch::new(
  "glMultiDrawMeshTasksIndirectNV",
)

///|
extern "c" fn epoxy_glMultiDrawMeshTasksIndirectNV(
  fp : CPtr,
  indirect : Int64,
  drawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawMeshTasksIndirectNV"

///|
pub fn gl_multi_draw_mesh_tasks_indirect_nv(
  indirect : Int64,
  drawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawMeshTasksIndirectNV(
    d_glMultiDrawMeshTasksIndirectNV.get(),
    indirect,
    drawcount,
    stride,
  )
}

///|
let d_glMultiDrawMeshTasksIndirectCountEXT : Dispatch = Dispatch::new(
  "glMultiDrawMeshTasksIndirectCountEXT",
)

///|
extern "c" fn epoxy_glMultiDrawMeshTasksIndirectCountEXT(
  fp : CPtr,
  indirect : Int64,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawMeshTasksIndirectCountEXT"

///|
pub fn gl_multi_draw_mesh_tasks_indirect_count_ext(
  indirect : Int64,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawMeshTasksIndirectCountEXT(
    d_glMultiDrawMeshTasksIndirectCountEXT.get(),
    indirect,
    drawcount,
    maxdrawcount,
    stride,
  )
}

///|
let d_glMultiDrawMeshTasksIndirectCountNV : Dispatch = Dispatch::new(
  "glMultiDrawMeshTasksIndirectCountNV",
)

///|
extern "c" fn epoxy_glMultiDrawMeshTasksIndirectCountNV(
  fp : CPtr,
  indirect : Int64,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit = "epoxy_glMultiDrawMeshTasksIndirectCountNV"

///|
pub fn gl_multi_draw_mesh_tasks_indirect_count_nv(
  indirect : Int64,
  drawcount : Int64,
  maxdrawcount : Int,
  stride : Int,
) -> Unit {
  epoxy_glMultiDrawMeshTasksIndirectCountNV(
    d_glMultiDrawMeshTasksIndirectCountNV.get(),
    indirect,
    drawcount,
    maxdrawcount,
    stride,
  )
}

///|
let d_glMultiDrawRangeElementArrayAPPLE : Dispatch = Dispatch::new(
  "glMultiDrawRangeElementArrayAPPLE",
)

///|
#borrow(first, count)
extern "c" fn epoxy_glMultiDrawRangeElementArrayAPPLE(
  fp : CPtr,
  mode : UInt,
  start : UInt,
  end : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
) -> Unit = "epoxy_glMultiDrawRangeElementArrayAPPLE"

///|
pub fn gl_multi_draw_range_element_array_apple(
  mode : UInt,
  start : UInt,
  end : UInt,
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
) -> Unit {
  epoxy_glMultiDrawRangeElementArrayAPPLE(
    d_glMultiDrawRangeElementArrayAPPLE.get(),
    mode,
    start,
    end,
    first,
    count,
    primcount,
  )
}

///|
let d_glMultiModeDrawArraysIBM : Dispatch = Dispatch::new(
  "glMultiModeDrawArraysIBM",
)

///|
#borrow(mode, first, count)
extern "c" fn epoxy_glMultiModeDrawArraysIBM(
  fp : CPtr,
  mode : FixedArray[UInt],
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
  modestride : Int,
) -> Unit = "epoxy_glMultiModeDrawArraysIBM"

///|
pub fn gl_multi_mode_draw_arrays_ibm(
  mode : FixedArray[UInt],
  first : FixedArray[Int],
  count : FixedArray[Int],
  primcount : Int,
  modestride : Int,
) -> Unit {
  epoxy_glMultiModeDrawArraysIBM(
    d_glMultiModeDrawArraysIBM.get(),
    mode,
    first,
    count,
    primcount,
    modestride,
  )
}

///|
let d_glMultiTexBufferEXT : Dispatch = Dispatch::new("glMultiTexBufferEXT")

///|
extern "c" fn epoxy_glMultiTexBufferEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glMultiTexBufferEXT"

///|
pub fn gl_multi_tex_buffer_ext(
  texunit : UInt,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glMultiTexBufferEXT(
    d_glMultiTexBufferEXT.get(),
    texunit,
    target,
    internalformat,
    buffer,
  )
}

///|
let d_glMultiTexCoord1bOES : Dispatch = Dispatch::new("glMultiTexCoord1bOES")

///|
extern "c" fn epoxy_glMultiTexCoord1bOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
) -> Unit = "epoxy_glMultiTexCoord1bOES"

///|
pub fn gl_multi_tex_coord1b_oes(texture : UInt, s : Int) -> Unit {
  epoxy_glMultiTexCoord1bOES(d_glMultiTexCoord1bOES.get(), texture, s)
}

///|
let d_glMultiTexCoord1bvOES : Dispatch = Dispatch::new("glMultiTexCoord1bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord1bvOES(
  fp : CPtr,
  texture : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glMultiTexCoord1bvOES"

///|
pub fn gl_multi_tex_coord1bv_oes(texture : UInt, coords : Bytes) -> Unit {
  epoxy_glMultiTexCoord1bvOES(d_glMultiTexCoord1bvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoord1d : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1d",
  ["glMultiTexCoord1dARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1d(
  fp : CPtr,
  target : UInt,
  s : Double,
) -> Unit = "epoxy_glMultiTexCoord1d"

///|
pub fn gl_multi_tex_coord1d(target : UInt, s : Double) -> Unit {
  epoxy_glMultiTexCoord1d(d_glMultiTexCoord1d.get(), target, s)
}

///|
let d_glMultiTexCoord1dARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1dARB",
  ["glMultiTexCoord1d"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1dARB(
  fp : CPtr,
  target : UInt,
  s : Double,
) -> Unit = "epoxy_glMultiTexCoord1dARB"

///|
pub fn gl_multi_tex_coord1d_arb(target : UInt, s : Double) -> Unit {
  epoxy_glMultiTexCoord1dARB(d_glMultiTexCoord1dARB.get(), target, s)
}

///|
let d_glMultiTexCoord1dv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1dv",
  ["glMultiTexCoord1dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1dv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord1dv"

///|
pub fn gl_multi_tex_coord1dv(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord1dv(d_glMultiTexCoord1dv.get(), target, v)
}

///|
let d_glMultiTexCoord1dvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1dvARB",
  ["glMultiTexCoord1dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1dvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord1dvARB"

///|
pub fn gl_multi_tex_coord1dv_arb(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord1dvARB(d_glMultiTexCoord1dvARB.get(), target, v)
}

///|
let d_glMultiTexCoord1f : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1f",
  ["glMultiTexCoord1fARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1f(
  fp : CPtr,
  target : UInt,
  s : Float,
) -> Unit = "epoxy_glMultiTexCoord1f"

///|
pub fn gl_multi_tex_coord1f(target : UInt, s : Float) -> Unit {
  epoxy_glMultiTexCoord1f(d_glMultiTexCoord1f.get(), target, s)
}

///|
let d_glMultiTexCoord1fARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1fARB",
  ["glMultiTexCoord1f"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1fARB(
  fp : CPtr,
  target : UInt,
  s : Float,
) -> Unit = "epoxy_glMultiTexCoord1fARB"

///|
pub fn gl_multi_tex_coord1f_arb(target : UInt, s : Float) -> Unit {
  epoxy_glMultiTexCoord1fARB(d_glMultiTexCoord1fARB.get(), target, s)
}

///|
let d_glMultiTexCoord1fv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1fv",
  ["glMultiTexCoord1fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1fv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord1fv"

///|
pub fn gl_multi_tex_coord1fv(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord1fv(d_glMultiTexCoord1fv.get(), target, v)
}

///|
let d_glMultiTexCoord1fvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1fvARB",
  ["glMultiTexCoord1fv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1fvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord1fvARB"

///|
pub fn gl_multi_tex_coord1fv_arb(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord1fvARB(d_glMultiTexCoord1fvARB.get(), target, v)
}

///|
let d_glMultiTexCoord1hNV : Dispatch = Dispatch::new("glMultiTexCoord1hNV")

///|
extern "c" fn epoxy_glMultiTexCoord1hNV(
  fp : CPtr,
  target : UInt,
  s : Int,
) -> Unit = "epoxy_glMultiTexCoord1hNV"

///|
pub fn gl_multi_tex_coord1h_nv(target : UInt, s : Int) -> Unit {
  epoxy_glMultiTexCoord1hNV(d_glMultiTexCoord1hNV.get(), target, s)
}

///|
let d_glMultiTexCoord1hvNV : Dispatch = Dispatch::new("glMultiTexCoord1hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1hvNV(
  fp : CPtr,
  target : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glMultiTexCoord1hvNV"

///|
pub fn gl_multi_tex_coord1hv_nv(target : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glMultiTexCoord1hvNV(d_glMultiTexCoord1hvNV.get(), target, v)
}

///|
let d_glMultiTexCoord1i : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1i",
  ["glMultiTexCoord1iARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1i(
  fp : CPtr,
  target : UInt,
  s : Int,
) -> Unit = "epoxy_glMultiTexCoord1i"

///|
pub fn gl_multi_tex_coord1i(target : UInt, s : Int) -> Unit {
  epoxy_glMultiTexCoord1i(d_glMultiTexCoord1i.get(), target, s)
}

///|
let d_glMultiTexCoord1iARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1iARB",
  ["glMultiTexCoord1i"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1iARB(
  fp : CPtr,
  target : UInt,
  s : Int,
) -> Unit = "epoxy_glMultiTexCoord1iARB"

///|
pub fn gl_multi_tex_coord1i_arb(target : UInt, s : Int) -> Unit {
  epoxy_glMultiTexCoord1iARB(d_glMultiTexCoord1iARB.get(), target, s)
}

///|
let d_glMultiTexCoord1iv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1iv",
  ["glMultiTexCoord1ivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1iv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord1iv"

///|
pub fn gl_multi_tex_coord1iv(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord1iv(d_glMultiTexCoord1iv.get(), target, v)
}

///|
let d_glMultiTexCoord1ivARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1ivARB",
  ["glMultiTexCoord1iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1ivARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord1ivARB"

///|
pub fn gl_multi_tex_coord1iv_arb(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord1ivARB(d_glMultiTexCoord1ivARB.get(), target, v)
}

///|
let d_glMultiTexCoord1s : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1s",
  ["glMultiTexCoord1sARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1s(
  fp : CPtr,
  target : UInt,
  s : Int,
) -> Unit = "epoxy_glMultiTexCoord1s"

///|
pub fn gl_multi_tex_coord1s(target : UInt, s : Int) -> Unit {
  epoxy_glMultiTexCoord1s(d_glMultiTexCoord1s.get(), target, s)
}

///|
let d_glMultiTexCoord1sARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1sARB",
  ["glMultiTexCoord1s"],
)

///|
extern "c" fn epoxy_glMultiTexCoord1sARB(
  fp : CPtr,
  target : UInt,
  s : Int,
) -> Unit = "epoxy_glMultiTexCoord1sARB"

///|
pub fn gl_multi_tex_coord1s_arb(target : UInt, s : Int) -> Unit {
  epoxy_glMultiTexCoord1sARB(d_glMultiTexCoord1sARB.get(), target, s)
}

///|
let d_glMultiTexCoord1sv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1sv",
  ["glMultiTexCoord1svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1sv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord1sv"

///|
pub fn gl_multi_tex_coord1sv(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord1sv(d_glMultiTexCoord1sv.get(), target, v)
}

///|
let d_glMultiTexCoord1svARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord1svARB",
  ["glMultiTexCoord1sv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord1svARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord1svARB"

///|
pub fn gl_multi_tex_coord1sv_arb(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord1svARB(d_glMultiTexCoord1svARB.get(), target, v)
}

///|
let d_glMultiTexCoord1xOES : Dispatch = Dispatch::new("glMultiTexCoord1xOES")

///|
extern "c" fn epoxy_glMultiTexCoord1xOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
) -> Unit = "epoxy_glMultiTexCoord1xOES"

///|
pub fn gl_multi_tex_coord1x_oes(texture : UInt, s : Int) -> Unit {
  epoxy_glMultiTexCoord1xOES(d_glMultiTexCoord1xOES.get(), texture, s)
}

///|
let d_glMultiTexCoord1xvOES : Dispatch = Dispatch::new("glMultiTexCoord1xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord1xvOES(
  fp : CPtr,
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord1xvOES"

///|
pub fn gl_multi_tex_coord1xv_oes(
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexCoord1xvOES(d_glMultiTexCoord1xvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoord2bOES : Dispatch = Dispatch::new("glMultiTexCoord2bOES")

///|
extern "c" fn epoxy_glMultiTexCoord2bOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
  t : Int,
) -> Unit = "epoxy_glMultiTexCoord2bOES"

///|
pub fn gl_multi_tex_coord2b_oes(texture : UInt, s : Int, t : Int) -> Unit {
  epoxy_glMultiTexCoord2bOES(d_glMultiTexCoord2bOES.get(), texture, s, t)
}

///|
let d_glMultiTexCoord2bvOES : Dispatch = Dispatch::new("glMultiTexCoord2bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord2bvOES(
  fp : CPtr,
  texture : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glMultiTexCoord2bvOES"

///|
pub fn gl_multi_tex_coord2bv_oes(texture : UInt, coords : Bytes) -> Unit {
  epoxy_glMultiTexCoord2bvOES(d_glMultiTexCoord2bvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoord2d : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2d",
  ["glMultiTexCoord2dARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2d(
  fp : CPtr,
  target : UInt,
  s : Double,
  t : Double,
) -> Unit = "epoxy_glMultiTexCoord2d"

///|
pub fn gl_multi_tex_coord2d(target : UInt, s : Double, t : Double) -> Unit {
  epoxy_glMultiTexCoord2d(d_glMultiTexCoord2d.get(), target, s, t)
}

///|
let d_glMultiTexCoord2dARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2dARB",
  ["glMultiTexCoord2d"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2dARB(
  fp : CPtr,
  target : UInt,
  s : Double,
  t : Double,
) -> Unit = "epoxy_glMultiTexCoord2dARB"

///|
pub fn gl_multi_tex_coord2d_arb(target : UInt, s : Double, t : Double) -> Unit {
  epoxy_glMultiTexCoord2dARB(d_glMultiTexCoord2dARB.get(), target, s, t)
}

///|
let d_glMultiTexCoord2dv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2dv",
  ["glMultiTexCoord2dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2dv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord2dv"

///|
pub fn gl_multi_tex_coord2dv(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord2dv(d_glMultiTexCoord2dv.get(), target, v)
}

///|
let d_glMultiTexCoord2dvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2dvARB",
  ["glMultiTexCoord2dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2dvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord2dvARB"

///|
pub fn gl_multi_tex_coord2dv_arb(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord2dvARB(d_glMultiTexCoord2dvARB.get(), target, v)
}

///|
let d_glMultiTexCoord2f : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2f",
  ["glMultiTexCoord2fARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2f(
  fp : CPtr,
  target : UInt,
  s : Float,
  t : Float,
) -> Unit = "epoxy_glMultiTexCoord2f"

///|
pub fn gl_multi_tex_coord2f(target : UInt, s : Float, t : Float) -> Unit {
  epoxy_glMultiTexCoord2f(d_glMultiTexCoord2f.get(), target, s, t)
}

///|
let d_glMultiTexCoord2fARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2fARB",
  ["glMultiTexCoord2f"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2fARB(
  fp : CPtr,
  target : UInt,
  s : Float,
  t : Float,
) -> Unit = "epoxy_glMultiTexCoord2fARB"

///|
pub fn gl_multi_tex_coord2f_arb(target : UInt, s : Float, t : Float) -> Unit {
  epoxy_glMultiTexCoord2fARB(d_glMultiTexCoord2fARB.get(), target, s, t)
}

///|
let d_glMultiTexCoord2fv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2fv",
  ["glMultiTexCoord2fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2fv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord2fv"

///|
pub fn gl_multi_tex_coord2fv(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord2fv(d_glMultiTexCoord2fv.get(), target, v)
}

///|
let d_glMultiTexCoord2fvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2fvARB",
  ["glMultiTexCoord2fv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2fvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord2fvARB"

///|
pub fn gl_multi_tex_coord2fv_arb(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord2fvARB(d_glMultiTexCoord2fvARB.get(), target, v)
}

///|
let d_glMultiTexCoord2hNV : Dispatch = Dispatch::new("glMultiTexCoord2hNV")

///|
extern "c" fn epoxy_glMultiTexCoord2hNV(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
) -> Unit = "epoxy_glMultiTexCoord2hNV"

///|
pub fn gl_multi_tex_coord2h_nv(target : UInt, s : Int, t : Int) -> Unit {
  epoxy_glMultiTexCoord2hNV(d_glMultiTexCoord2hNV.get(), target, s, t)
}

///|
let d_glMultiTexCoord2hvNV : Dispatch = Dispatch::new("glMultiTexCoord2hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2hvNV(
  fp : CPtr,
  target : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glMultiTexCoord2hvNV"

///|
pub fn gl_multi_tex_coord2hv_nv(target : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glMultiTexCoord2hvNV(d_glMultiTexCoord2hvNV.get(), target, v)
}

///|
let d_glMultiTexCoord2i : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2i",
  ["glMultiTexCoord2iARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2i(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
) -> Unit = "epoxy_glMultiTexCoord2i"

///|
pub fn gl_multi_tex_coord2i(target : UInt, s : Int, t : Int) -> Unit {
  epoxy_glMultiTexCoord2i(d_glMultiTexCoord2i.get(), target, s, t)
}

///|
let d_glMultiTexCoord2iARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2iARB",
  ["glMultiTexCoord2i"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2iARB(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
) -> Unit = "epoxy_glMultiTexCoord2iARB"

///|
pub fn gl_multi_tex_coord2i_arb(target : UInt, s : Int, t : Int) -> Unit {
  epoxy_glMultiTexCoord2iARB(d_glMultiTexCoord2iARB.get(), target, s, t)
}

///|
let d_glMultiTexCoord2iv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2iv",
  ["glMultiTexCoord2ivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2iv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord2iv"

///|
pub fn gl_multi_tex_coord2iv(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord2iv(d_glMultiTexCoord2iv.get(), target, v)
}

///|
let d_glMultiTexCoord2ivARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2ivARB",
  ["glMultiTexCoord2iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2ivARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord2ivARB"

///|
pub fn gl_multi_tex_coord2iv_arb(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord2ivARB(d_glMultiTexCoord2ivARB.get(), target, v)
}

///|
let d_glMultiTexCoord2s : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2s",
  ["glMultiTexCoord2sARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2s(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
) -> Unit = "epoxy_glMultiTexCoord2s"

///|
pub fn gl_multi_tex_coord2s(target : UInt, s : Int, t : Int) -> Unit {
  epoxy_glMultiTexCoord2s(d_glMultiTexCoord2s.get(), target, s, t)
}

///|
let d_glMultiTexCoord2sARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2sARB",
  ["glMultiTexCoord2s"],
)

///|
extern "c" fn epoxy_glMultiTexCoord2sARB(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
) -> Unit = "epoxy_glMultiTexCoord2sARB"

///|
pub fn gl_multi_tex_coord2s_arb(target : UInt, s : Int, t : Int) -> Unit {
  epoxy_glMultiTexCoord2sARB(d_glMultiTexCoord2sARB.get(), target, s, t)
}

///|
let d_glMultiTexCoord2sv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2sv",
  ["glMultiTexCoord2svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2sv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord2sv"

///|
pub fn gl_multi_tex_coord2sv(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord2sv(d_glMultiTexCoord2sv.get(), target, v)
}

///|
let d_glMultiTexCoord2svARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord2svARB",
  ["glMultiTexCoord2sv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord2svARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord2svARB"

///|
pub fn gl_multi_tex_coord2sv_arb(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord2svARB(d_glMultiTexCoord2svARB.get(), target, v)
}

///|
let d_glMultiTexCoord2xOES : Dispatch = Dispatch::new("glMultiTexCoord2xOES")

///|
extern "c" fn epoxy_glMultiTexCoord2xOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
  t : Int,
) -> Unit = "epoxy_glMultiTexCoord2xOES"

///|
pub fn gl_multi_tex_coord2x_oes(texture : UInt, s : Int, t : Int) -> Unit {
  epoxy_glMultiTexCoord2xOES(d_glMultiTexCoord2xOES.get(), texture, s, t)
}

///|
let d_glMultiTexCoord2xvOES : Dispatch = Dispatch::new("glMultiTexCoord2xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord2xvOES(
  fp : CPtr,
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord2xvOES"

///|
pub fn gl_multi_tex_coord2xv_oes(
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexCoord2xvOES(d_glMultiTexCoord2xvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoord3bOES : Dispatch = Dispatch::new("glMultiTexCoord3bOES")

///|
extern "c" fn epoxy_glMultiTexCoord3bOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glMultiTexCoord3bOES"

///|
pub fn gl_multi_tex_coord3b_oes(
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit {
  epoxy_glMultiTexCoord3bOES(d_glMultiTexCoord3bOES.get(), texture, s, t, r)
}

///|
let d_glMultiTexCoord3bvOES : Dispatch = Dispatch::new("glMultiTexCoord3bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord3bvOES(
  fp : CPtr,
  texture : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glMultiTexCoord3bvOES"

///|
pub fn gl_multi_tex_coord3bv_oes(texture : UInt, coords : Bytes) -> Unit {
  epoxy_glMultiTexCoord3bvOES(d_glMultiTexCoord3bvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoord3d : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3d",
  ["glMultiTexCoord3dARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3d(
  fp : CPtr,
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
) -> Unit = "epoxy_glMultiTexCoord3d"

///|
pub fn gl_multi_tex_coord3d(
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
) -> Unit {
  epoxy_glMultiTexCoord3d(d_glMultiTexCoord3d.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3dARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3dARB",
  ["glMultiTexCoord3d"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3dARB(
  fp : CPtr,
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
) -> Unit = "epoxy_glMultiTexCoord3dARB"

///|
pub fn gl_multi_tex_coord3d_arb(
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
) -> Unit {
  epoxy_glMultiTexCoord3dARB(d_glMultiTexCoord3dARB.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3dv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3dv",
  ["glMultiTexCoord3dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3dv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord3dv"

///|
pub fn gl_multi_tex_coord3dv(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord3dv(d_glMultiTexCoord3dv.get(), target, v)
}

///|
let d_glMultiTexCoord3dvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3dvARB",
  ["glMultiTexCoord3dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3dvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord3dvARB"

///|
pub fn gl_multi_tex_coord3dv_arb(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord3dvARB(d_glMultiTexCoord3dvARB.get(), target, v)
}

///|
let d_glMultiTexCoord3f : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3f",
  ["glMultiTexCoord3fARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3f(
  fp : CPtr,
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
) -> Unit = "epoxy_glMultiTexCoord3f"

///|
pub fn gl_multi_tex_coord3f(
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
) -> Unit {
  epoxy_glMultiTexCoord3f(d_glMultiTexCoord3f.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3fARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3fARB",
  ["glMultiTexCoord3f"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3fARB(
  fp : CPtr,
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
) -> Unit = "epoxy_glMultiTexCoord3fARB"

///|
pub fn gl_multi_tex_coord3f_arb(
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
) -> Unit {
  epoxy_glMultiTexCoord3fARB(d_glMultiTexCoord3fARB.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3fv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3fv",
  ["glMultiTexCoord3fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3fv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord3fv"

///|
pub fn gl_multi_tex_coord3fv(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord3fv(d_glMultiTexCoord3fv.get(), target, v)
}

///|
let d_glMultiTexCoord3fvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3fvARB",
  ["glMultiTexCoord3fv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3fvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord3fvARB"

///|
pub fn gl_multi_tex_coord3fv_arb(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord3fvARB(d_glMultiTexCoord3fvARB.get(), target, v)
}

///|
let d_glMultiTexCoord3hNV : Dispatch = Dispatch::new("glMultiTexCoord3hNV")

///|
extern "c" fn epoxy_glMultiTexCoord3hNV(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glMultiTexCoord3hNV"

///|
pub fn gl_multi_tex_coord3h_nv(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit {
  epoxy_glMultiTexCoord3hNV(d_glMultiTexCoord3hNV.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3hvNV : Dispatch = Dispatch::new("glMultiTexCoord3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3hvNV(
  fp : CPtr,
  target : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glMultiTexCoord3hvNV"

///|
pub fn gl_multi_tex_coord3hv_nv(target : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glMultiTexCoord3hvNV(d_glMultiTexCoord3hvNV.get(), target, v)
}

///|
let d_glMultiTexCoord3i : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3i",
  ["glMultiTexCoord3iARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3i(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glMultiTexCoord3i"

///|
pub fn gl_multi_tex_coord3i(target : UInt, s : Int, t : Int, r : Int) -> Unit {
  epoxy_glMultiTexCoord3i(d_glMultiTexCoord3i.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3iARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3iARB",
  ["glMultiTexCoord3i"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3iARB(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glMultiTexCoord3iARB"

///|
pub fn gl_multi_tex_coord3i_arb(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit {
  epoxy_glMultiTexCoord3iARB(d_glMultiTexCoord3iARB.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3iv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3iv",
  ["glMultiTexCoord3ivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3iv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord3iv"

///|
pub fn gl_multi_tex_coord3iv(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord3iv(d_glMultiTexCoord3iv.get(), target, v)
}

///|
let d_glMultiTexCoord3ivARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3ivARB",
  ["glMultiTexCoord3iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3ivARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord3ivARB"

///|
pub fn gl_multi_tex_coord3iv_arb(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord3ivARB(d_glMultiTexCoord3ivARB.get(), target, v)
}

///|
let d_glMultiTexCoord3s : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3s",
  ["glMultiTexCoord3sARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3s(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glMultiTexCoord3s"

///|
pub fn gl_multi_tex_coord3s(target : UInt, s : Int, t : Int, r : Int) -> Unit {
  epoxy_glMultiTexCoord3s(d_glMultiTexCoord3s.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3sARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3sARB",
  ["glMultiTexCoord3s"],
)

///|
extern "c" fn epoxy_glMultiTexCoord3sARB(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glMultiTexCoord3sARB"

///|
pub fn gl_multi_tex_coord3s_arb(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit {
  epoxy_glMultiTexCoord3sARB(d_glMultiTexCoord3sARB.get(), target, s, t, r)
}

///|
let d_glMultiTexCoord3sv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3sv",
  ["glMultiTexCoord3svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3sv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord3sv"

///|
pub fn gl_multi_tex_coord3sv(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord3sv(d_glMultiTexCoord3sv.get(), target, v)
}

///|
let d_glMultiTexCoord3svARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord3svARB",
  ["glMultiTexCoord3sv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord3svARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord3svARB"

///|
pub fn gl_multi_tex_coord3sv_arb(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord3svARB(d_glMultiTexCoord3svARB.get(), target, v)
}

///|
let d_glMultiTexCoord3xOES : Dispatch = Dispatch::new("glMultiTexCoord3xOES")

///|
extern "c" fn epoxy_glMultiTexCoord3xOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glMultiTexCoord3xOES"

///|
pub fn gl_multi_tex_coord3x_oes(
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
) -> Unit {
  epoxy_glMultiTexCoord3xOES(d_glMultiTexCoord3xOES.get(), texture, s, t, r)
}

///|
let d_glMultiTexCoord3xvOES : Dispatch = Dispatch::new("glMultiTexCoord3xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord3xvOES(
  fp : CPtr,
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord3xvOES"

///|
pub fn gl_multi_tex_coord3xv_oes(
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexCoord3xvOES(d_glMultiTexCoord3xvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoord4bOES : Dispatch = Dispatch::new("glMultiTexCoord4bOES")

///|
extern "c" fn epoxy_glMultiTexCoord4bOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4bOES"

///|
pub fn gl_multi_tex_coord4b_oes(
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4bOES(d_glMultiTexCoord4bOES.get(), texture, s, t, r, q)
}

///|
let d_glMultiTexCoord4bvOES : Dispatch = Dispatch::new("glMultiTexCoord4bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord4bvOES(
  fp : CPtr,
  texture : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glMultiTexCoord4bvOES"

///|
pub fn gl_multi_tex_coord4bv_oes(texture : UInt, coords : Bytes) -> Unit {
  epoxy_glMultiTexCoord4bvOES(d_glMultiTexCoord4bvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoord4d : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4d",
  ["glMultiTexCoord4dARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4d(
  fp : CPtr,
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
  q : Double,
) -> Unit = "epoxy_glMultiTexCoord4d"

///|
pub fn gl_multi_tex_coord4d(
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
  q : Double,
) -> Unit {
  epoxy_glMultiTexCoord4d(d_glMultiTexCoord4d.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4dARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4dARB",
  ["glMultiTexCoord4d"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4dARB(
  fp : CPtr,
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
  q : Double,
) -> Unit = "epoxy_glMultiTexCoord4dARB"

///|
pub fn gl_multi_tex_coord4d_arb(
  target : UInt,
  s : Double,
  t : Double,
  r : Double,
  q : Double,
) -> Unit {
  epoxy_glMultiTexCoord4dARB(d_glMultiTexCoord4dARB.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4dv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4dv",
  ["glMultiTexCoord4dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4dv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord4dv"

///|
pub fn gl_multi_tex_coord4dv(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord4dv(d_glMultiTexCoord4dv.get(), target, v)
}

///|
let d_glMultiTexCoord4dvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4dvARB",
  ["glMultiTexCoord4dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4dvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexCoord4dvARB"

///|
pub fn gl_multi_tex_coord4dv_arb(target : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glMultiTexCoord4dvARB(d_glMultiTexCoord4dvARB.get(), target, v)
}

///|
let d_glMultiTexCoord4f : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4f",
  ["glMultiTexCoord4fARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4f(
  fp : CPtr,
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
  q : Float,
) -> Unit = "epoxy_glMultiTexCoord4f"

///|
pub fn gl_multi_tex_coord4f(
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
  q : Float,
) -> Unit {
  epoxy_glMultiTexCoord4f(d_glMultiTexCoord4f.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4fARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4fARB",
  ["glMultiTexCoord4f"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4fARB(
  fp : CPtr,
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
  q : Float,
) -> Unit = "epoxy_glMultiTexCoord4fARB"

///|
pub fn gl_multi_tex_coord4f_arb(
  target : UInt,
  s : Float,
  t : Float,
  r : Float,
  q : Float,
) -> Unit {
  epoxy_glMultiTexCoord4fARB(d_glMultiTexCoord4fARB.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4fv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4fv",
  ["glMultiTexCoord4fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4fv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord4fv"

///|
pub fn gl_multi_tex_coord4fv(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord4fv(d_glMultiTexCoord4fv.get(), target, v)
}

///|
let d_glMultiTexCoord4fvARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4fvARB",
  ["glMultiTexCoord4fv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4fvARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexCoord4fvARB"

///|
pub fn gl_multi_tex_coord4fv_arb(target : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glMultiTexCoord4fvARB(d_glMultiTexCoord4fvARB.get(), target, v)
}

///|
let d_glMultiTexCoord4hNV : Dispatch = Dispatch::new("glMultiTexCoord4hNV")

///|
extern "c" fn epoxy_glMultiTexCoord4hNV(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4hNV"

///|
pub fn gl_multi_tex_coord4h_nv(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4hNV(d_glMultiTexCoord4hNV.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4hvNV : Dispatch = Dispatch::new("glMultiTexCoord4hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4hvNV(
  fp : CPtr,
  target : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glMultiTexCoord4hvNV"

///|
pub fn gl_multi_tex_coord4hv_nv(target : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glMultiTexCoord4hvNV(d_glMultiTexCoord4hvNV.get(), target, v)
}

///|
let d_glMultiTexCoord4i : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4i",
  ["glMultiTexCoord4iARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4i(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4i"

///|
pub fn gl_multi_tex_coord4i(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4i(d_glMultiTexCoord4i.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4iARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4iARB",
  ["glMultiTexCoord4i"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4iARB(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4iARB"

///|
pub fn gl_multi_tex_coord4i_arb(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4iARB(d_glMultiTexCoord4iARB.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4iv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4iv",
  ["glMultiTexCoord4ivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4iv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord4iv"

///|
pub fn gl_multi_tex_coord4iv(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord4iv(d_glMultiTexCoord4iv.get(), target, v)
}

///|
let d_glMultiTexCoord4ivARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4ivARB",
  ["glMultiTexCoord4iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4ivARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord4ivARB"

///|
pub fn gl_multi_tex_coord4iv_arb(target : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glMultiTexCoord4ivARB(d_glMultiTexCoord4ivARB.get(), target, v)
}

///|
let d_glMultiTexCoord4s : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4s",
  ["glMultiTexCoord4sARB"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4s(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4s"

///|
pub fn gl_multi_tex_coord4s(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4s(d_glMultiTexCoord4s.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4sARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4sARB",
  ["glMultiTexCoord4s"],
)

///|
extern "c" fn epoxy_glMultiTexCoord4sARB(
  fp : CPtr,
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4sARB"

///|
pub fn gl_multi_tex_coord4s_arb(
  target : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4sARB(d_glMultiTexCoord4sARB.get(), target, s, t, r, q)
}

///|
let d_glMultiTexCoord4sv : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4sv",
  ["glMultiTexCoord4svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4sv(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord4sv"

///|
pub fn gl_multi_tex_coord4sv(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord4sv(d_glMultiTexCoord4sv.get(), target, v)
}

///|
let d_glMultiTexCoord4svARB : Dispatch = Dispatch::with_aliases(
  "glMultiTexCoord4svARB",
  ["glMultiTexCoord4sv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glMultiTexCoord4svARB(
  fp : CPtr,
  target : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glMultiTexCoord4svARB"

///|
pub fn gl_multi_tex_coord4sv_arb(target : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glMultiTexCoord4svARB(d_glMultiTexCoord4svARB.get(), target, v)
}

///|
let d_glMultiTexCoord4x : Dispatch = Dispatch::new("glMultiTexCoord4x")

///|
extern "c" fn epoxy_glMultiTexCoord4x(
  fp : CPtr,
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4x"

///|
pub fn gl_multi_tex_coord4x(
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4x(d_glMultiTexCoord4x.get(), texture, s, t, r, q)
}

///|
let d_glMultiTexCoord4xOES : Dispatch = Dispatch::new("glMultiTexCoord4xOES")

///|
extern "c" fn epoxy_glMultiTexCoord4xOES(
  fp : CPtr,
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glMultiTexCoord4xOES"

///|
pub fn gl_multi_tex_coord4x_oes(
  texture : UInt,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit {
  epoxy_glMultiTexCoord4xOES(d_glMultiTexCoord4xOES.get(), texture, s, t, r, q)
}

///|
let d_glMultiTexCoord4xvOES : Dispatch = Dispatch::new("glMultiTexCoord4xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoord4xvOES(
  fp : CPtr,
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexCoord4xvOES"

///|
pub fn gl_multi_tex_coord4xv_oes(
  texture : UInt,
  coords : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexCoord4xvOES(d_glMultiTexCoord4xvOES.get(), texture, coords)
}

///|
let d_glMultiTexCoordP1ui : Dispatch = Dispatch::new("glMultiTexCoordP1ui")

///|
extern "c" fn epoxy_glMultiTexCoordP1ui(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glMultiTexCoordP1ui"

///|
pub fn gl_multi_tex_coord_p1ui(
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit {
  epoxy_glMultiTexCoordP1ui(d_glMultiTexCoordP1ui.get(), texture, type_, coords)
}

///|
let d_glMultiTexCoordP1uiv : Dispatch = Dispatch::new("glMultiTexCoordP1uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoordP1uiv(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glMultiTexCoordP1uiv"

///|
pub fn gl_multi_tex_coord_p1uiv(
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit {
  epoxy_glMultiTexCoordP1uiv(
    d_glMultiTexCoordP1uiv.get(),
    texture,
    type_,
    coords,
  )
}

///|
let d_glMultiTexCoordP2ui : Dispatch = Dispatch::new("glMultiTexCoordP2ui")

///|
extern "c" fn epoxy_glMultiTexCoordP2ui(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glMultiTexCoordP2ui"

///|
pub fn gl_multi_tex_coord_p2ui(
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit {
  epoxy_glMultiTexCoordP2ui(d_glMultiTexCoordP2ui.get(), texture, type_, coords)
}

///|
let d_glMultiTexCoordP2uiv : Dispatch = Dispatch::new("glMultiTexCoordP2uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoordP2uiv(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glMultiTexCoordP2uiv"

///|
pub fn gl_multi_tex_coord_p2uiv(
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit {
  epoxy_glMultiTexCoordP2uiv(
    d_glMultiTexCoordP2uiv.get(),
    texture,
    type_,
    coords,
  )
}

///|
let d_glMultiTexCoordP3ui : Dispatch = Dispatch::new("glMultiTexCoordP3ui")

///|
extern "c" fn epoxy_glMultiTexCoordP3ui(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glMultiTexCoordP3ui"

///|
pub fn gl_multi_tex_coord_p3ui(
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit {
  epoxy_glMultiTexCoordP3ui(d_glMultiTexCoordP3ui.get(), texture, type_, coords)
}

///|
let d_glMultiTexCoordP3uiv : Dispatch = Dispatch::new("glMultiTexCoordP3uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoordP3uiv(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glMultiTexCoordP3uiv"

///|
pub fn gl_multi_tex_coord_p3uiv(
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit {
  epoxy_glMultiTexCoordP3uiv(
    d_glMultiTexCoordP3uiv.get(),
    texture,
    type_,
    coords,
  )
}

///|
let d_glMultiTexCoordP4ui : Dispatch = Dispatch::new("glMultiTexCoordP4ui")

///|
extern "c" fn epoxy_glMultiTexCoordP4ui(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glMultiTexCoordP4ui"

///|
pub fn gl_multi_tex_coord_p4ui(
  texture : UInt,
  type_ : UInt,
  coords : UInt,
) -> Unit {
  epoxy_glMultiTexCoordP4ui(d_glMultiTexCoordP4ui.get(), texture, type_, coords)
}

///|
let d_glMultiTexCoordP4uiv : Dispatch = Dispatch::new("glMultiTexCoordP4uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glMultiTexCoordP4uiv(
  fp : CPtr,
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glMultiTexCoordP4uiv"

///|
pub fn gl_multi_tex_coord_p4uiv(
  texture : UInt,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit {
  epoxy_glMultiTexCoordP4uiv(
    d_glMultiTexCoordP4uiv.get(),
    texture,
    type_,
    coords,
  )
}

///|
let d_glMultiTexCoordPointerEXT : Dispatch = Dispatch::new(
  "glMultiTexCoordPointerEXT",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glMultiTexCoordPointerEXT(
  fp : CPtr,
  texunit : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glMultiTexCoordPointerEXT"

///|
pub fn gl_multi_tex_coord_pointer_ext(
  texunit : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glMultiTexCoordPointerEXT(
    d_glMultiTexCoordPointerEXT.get(),
    texunit,
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glMultiTexEnvfEXT : Dispatch = Dispatch::new("glMultiTexEnvfEXT")

///|
extern "c" fn epoxy_glMultiTexEnvfEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glMultiTexEnvfEXT"

///|
pub fn gl_multi_tex_envf_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glMultiTexEnvfEXT(
    d_glMultiTexEnvfEXT.get(),
    texunit,
    target,
    pname,
    param,
  )
}

///|
let d_glMultiTexEnvfvEXT : Dispatch = Dispatch::new("glMultiTexEnvfvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexEnvfvEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexEnvfvEXT"

///|
pub fn gl_multi_tex_envfv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glMultiTexEnvfvEXT(
    d_glMultiTexEnvfvEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glMultiTexEnviEXT : Dispatch = Dispatch::new("glMultiTexEnviEXT")

///|
extern "c" fn epoxy_glMultiTexEnviEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glMultiTexEnviEXT"

///|
pub fn gl_multi_tex_envi_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glMultiTexEnviEXT(
    d_glMultiTexEnviEXT.get(),
    texunit,
    target,
    pname,
    param,
  )
}

///|
let d_glMultiTexEnvivEXT : Dispatch = Dispatch::new("glMultiTexEnvivEXT")

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexEnvivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexEnvivEXT"

///|
pub fn gl_multi_tex_enviv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexEnvivEXT(
    d_glMultiTexEnvivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glMultiTexGendEXT : Dispatch = Dispatch::new("glMultiTexGendEXT")

///|
extern "c" fn epoxy_glMultiTexGendEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  param : Double,
) -> Unit = "epoxy_glMultiTexGendEXT"

///|
pub fn gl_multi_tex_gend_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  param : Double,
) -> Unit {
  epoxy_glMultiTexGendEXT(
    d_glMultiTexGendEXT.get(),
    texunit,
    coord,
    pname,
    param,
  )
}

///|
let d_glMultiTexGendvEXT : Dispatch = Dispatch::new("glMultiTexGendvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexGendvEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glMultiTexGendvEXT"

///|
pub fn gl_multi_tex_gendv_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glMultiTexGendvEXT(
    d_glMultiTexGendvEXT.get(),
    texunit,
    coord,
    pname,
    params,
  )
}

///|
let d_glMultiTexGenfEXT : Dispatch = Dispatch::new("glMultiTexGenfEXT")

///|
extern "c" fn epoxy_glMultiTexGenfEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glMultiTexGenfEXT"

///|
pub fn gl_multi_tex_genf_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glMultiTexGenfEXT(
    d_glMultiTexGenfEXT.get(),
    texunit,
    coord,
    pname,
    param,
  )
}

///|
let d_glMultiTexGenfvEXT : Dispatch = Dispatch::new("glMultiTexGenfvEXT")

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexGenfvEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexGenfvEXT"

///|
pub fn gl_multi_tex_genfv_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glMultiTexGenfvEXT(
    d_glMultiTexGenfvEXT.get(),
    texunit,
    coord,
    pname,
    params,
  )
}

///|
let d_glMultiTexGeniEXT : Dispatch = Dispatch::new("glMultiTexGeniEXT")

///|
extern "c" fn epoxy_glMultiTexGeniEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glMultiTexGeniEXT"

///|
pub fn gl_multi_tex_geni_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glMultiTexGeniEXT(
    d_glMultiTexGeniEXT.get(),
    texunit,
    coord,
    pname,
    param,
  )
}

///|
let d_glMultiTexGenivEXT : Dispatch = Dispatch::new("glMultiTexGenivEXT")

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexGenivEXT(
  fp : CPtr,
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexGenivEXT"

///|
pub fn gl_multi_tex_geniv_ext(
  texunit : UInt,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexGenivEXT(
    d_glMultiTexGenivEXT.get(),
    texunit,
    coord,
    pname,
    params,
  )
}

///|
let d_glMultiTexImage1DEXT : Dispatch = Dispatch::new("glMultiTexImage1DEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glMultiTexImage1DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glMultiTexImage1DEXT"

///|
pub fn gl_multi_tex_image1_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glMultiTexImage1DEXT(
    d_glMultiTexImage1DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    width,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glMultiTexImage2DEXT : Dispatch = Dispatch::new("glMultiTexImage2DEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glMultiTexImage2DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glMultiTexImage2DEXT"

///|
pub fn gl_multi_tex_image2_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glMultiTexImage2DEXT(
    d_glMultiTexImage2DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    width,
    height,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glMultiTexImage3DEXT : Dispatch = Dispatch::new("glMultiTexImage3DEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glMultiTexImage3DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glMultiTexImage3DEXT"

///|
pub fn gl_multi_tex_image3_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glMultiTexImage3DEXT(
    d_glMultiTexImage3DEXT.get(),
    texunit,
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glMultiTexParameterIivEXT : Dispatch = Dispatch::new(
  "glMultiTexParameterIivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexParameterIivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexParameterIivEXT"

///|
pub fn gl_multi_tex_parameter_iiv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexParameterIivEXT(
    d_glMultiTexParameterIivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glMultiTexParameterIuivEXT : Dispatch = Dispatch::new(
  "glMultiTexParameterIuivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexParameterIuivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glMultiTexParameterIuivEXT"

///|
pub fn gl_multi_tex_parameter_iuiv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glMultiTexParameterIuivEXT(
    d_glMultiTexParameterIuivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glMultiTexParameterfEXT : Dispatch = Dispatch::new(
  "glMultiTexParameterfEXT",
)

///|
extern "c" fn epoxy_glMultiTexParameterfEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glMultiTexParameterfEXT"

///|
pub fn gl_multi_tex_parameterf_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glMultiTexParameterfEXT(
    d_glMultiTexParameterfEXT.get(),
    texunit,
    target,
    pname,
    param,
  )
}

///|
let d_glMultiTexParameterfvEXT : Dispatch = Dispatch::new(
  "glMultiTexParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexParameterfvEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glMultiTexParameterfvEXT"

///|
pub fn gl_multi_tex_parameterfv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glMultiTexParameterfvEXT(
    d_glMultiTexParameterfvEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glMultiTexParameteriEXT : Dispatch = Dispatch::new(
  "glMultiTexParameteriEXT",
)

///|
extern "c" fn epoxy_glMultiTexParameteriEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glMultiTexParameteriEXT"

///|
pub fn gl_multi_tex_parameteri_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glMultiTexParameteriEXT(
    d_glMultiTexParameteriEXT.get(),
    texunit,
    target,
    pname,
    param,
  )
}

///|
let d_glMultiTexParameterivEXT : Dispatch = Dispatch::new(
  "glMultiTexParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glMultiTexParameterivEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMultiTexParameterivEXT"

///|
pub fn gl_multi_tex_parameteriv_ext(
  texunit : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMultiTexParameterivEXT(
    d_glMultiTexParameterivEXT.get(),
    texunit,
    target,
    pname,
    params,
  )
}

///|
let d_glMultiTexRenderbufferEXT : Dispatch = Dispatch::new(
  "glMultiTexRenderbufferEXT",
)

///|
extern "c" fn epoxy_glMultiTexRenderbufferEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glMultiTexRenderbufferEXT"

///|
pub fn gl_multi_tex_renderbuffer_ext(
  texunit : UInt,
  target : UInt,
  renderbuffer : UInt,
) -> Unit {
  epoxy_glMultiTexRenderbufferEXT(
    d_glMultiTexRenderbufferEXT.get(),
    texunit,
    target,
    renderbuffer,
  )
}

///|
let d_glMultiTexSubImage1DEXT : Dispatch = Dispatch::new(
  "glMultiTexSubImage1DEXT",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glMultiTexSubImage1DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glMultiTexSubImage1DEXT"

///|
pub fn gl_multi_tex_sub_image1_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glMultiTexSubImage1DEXT(
    d_glMultiTexSubImage1DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    width,
    format,
    type_,
    pixels,
  )
}

///|
let d_glMultiTexSubImage2DEXT : Dispatch = Dispatch::new(
  "glMultiTexSubImage2DEXT",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glMultiTexSubImage2DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glMultiTexSubImage2DEXT"

///|
pub fn gl_multi_tex_sub_image2_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glMultiTexSubImage2DEXT(
    d_glMultiTexSubImage2DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    type_,
    pixels,
  )
}

///|
let d_glMultiTexSubImage3DEXT : Dispatch = Dispatch::new(
  "glMultiTexSubImage3DEXT",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glMultiTexSubImage3DEXT(
  fp : CPtr,
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glMultiTexSubImage3DEXT"

///|
pub fn gl_multi_tex_sub_image3_dext(
  texunit : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glMultiTexSubImage3DEXT(
    d_glMultiTexSubImage3DEXT.get(),
    texunit,
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    pixels,
  )
}

///|
let d_glMulticastBarrierNV : Dispatch = Dispatch::new("glMulticastBarrierNV")

///|
extern "c" fn epoxy_glMulticastBarrierNV(fp : CPtr) -> Unit = "epoxy_glMulticastBarrierNV"

///|
pub fn gl_multicast_barrier_nv() -> Unit {
  epoxy_glMulticastBarrierNV(d_glMulticastBarrierNV.get())
}

///|
let d_glMulticastBlitFramebufferNV : Dispatch = Dispatch::new(
  "glMulticastBlitFramebufferNV",
)

///|
extern "c" fn epoxy_glMulticastBlitFramebufferNV(
  fp : CPtr,
  srcGpu : UInt,
  dstGpu : UInt,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit = "epoxy_glMulticastBlitFramebufferNV"

///|
pub fn gl_multicast_blit_framebuffer_nv(
  srcGpu : UInt,
  dstGpu : UInt,
  srcX0 : Int,
  srcY0 : Int,
  srcX1 : Int,
  srcY1 : Int,
  dstX0 : Int,
  dstY0 : Int,
  dstX1 : Int,
  dstY1 : Int,
  mask : UInt,
  filter : UInt,
) -> Unit {
  epoxy_glMulticastBlitFramebufferNV(
    d_glMulticastBlitFramebufferNV.get(),
    srcGpu,
    dstGpu,
    srcX0,
    srcY0,
    srcX1,
    srcY1,
    dstX0,
    dstY0,
    dstX1,
    dstY1,
    mask,
    filter,
  )
}

///|
let d_glMulticastBufferSubDataNV : Dispatch = Dispatch::new(
  "glMulticastBufferSubDataNV",
)

///|
#borrow(data)
extern "c" fn epoxy_glMulticastBufferSubDataNV(
  fp : CPtr,
  gpuMask : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glMulticastBufferSubDataNV"

///|
pub fn gl_multicast_buffer_sub_data_nv(
  gpuMask : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glMulticastBufferSubDataNV(
    d_glMulticastBufferSubDataNV.get(),
    gpuMask,
    buffer,
    offset,
    size,
    data,
  )
}

///|
let d_glMulticastCopyBufferSubDataNV : Dispatch = Dispatch::new(
  "glMulticastCopyBufferSubDataNV",
)

///|
extern "c" fn epoxy_glMulticastCopyBufferSubDataNV(
  fp : CPtr,
  readGpu : UInt,
  writeGpuMask : UInt,
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit = "epoxy_glMulticastCopyBufferSubDataNV"

///|
pub fn gl_multicast_copy_buffer_sub_data_nv(
  readGpu : UInt,
  writeGpuMask : UInt,
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glMulticastCopyBufferSubDataNV(
    d_glMulticastCopyBufferSubDataNV.get(),
    readGpu,
    writeGpuMask,
    readBuffer,
    writeBuffer,
    readOffset,
    writeOffset,
    size,
  )
}

///|
let d_glMulticastCopyImageSubDataNV : Dispatch = Dispatch::new(
  "glMulticastCopyImageSubDataNV",
)

///|
extern "c" fn epoxy_glMulticastCopyImageSubDataNV(
  fp : CPtr,
  srcGpu : UInt,
  dstGpuMask : UInt,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit = "epoxy_glMulticastCopyImageSubDataNV"

///|
pub fn gl_multicast_copy_image_sub_data_nv(
  srcGpu : UInt,
  dstGpuMask : UInt,
  srcName : UInt,
  srcTarget : UInt,
  srcLevel : Int,
  srcX : Int,
  srcY : Int,
  srcZ : Int,
  dstName : UInt,
  dstTarget : UInt,
  dstLevel : Int,
  dstX : Int,
  dstY : Int,
  dstZ : Int,
  srcWidth : Int,
  srcHeight : Int,
  srcDepth : Int,
) -> Unit {
  epoxy_glMulticastCopyImageSubDataNV(
    d_glMulticastCopyImageSubDataNV.get(),
    srcGpu,
    dstGpuMask,
    srcName,
    srcTarget,
    srcLevel,
    srcX,
    srcY,
    srcZ,
    dstName,
    dstTarget,
    dstLevel,
    dstX,
    dstY,
    dstZ,
    srcWidth,
    srcHeight,
    srcDepth,
  )
}

///|
let d_glMulticastFramebufferSampleLocationsfvNV : Dispatch = Dispatch::new(
  "glMulticastFramebufferSampleLocationsfvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glMulticastFramebufferSampleLocationsfvNV(
  fp : CPtr,
  gpu : UInt,
  framebuffer : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMulticastFramebufferSampleLocationsfvNV"

///|
pub fn gl_multicast_framebuffer_sample_locationsfv_nv(
  gpu : UInt,
  framebuffer : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glMulticastFramebufferSampleLocationsfvNV(
    d_glMulticastFramebufferSampleLocationsfvNV.get(),
    gpu,
    framebuffer,
    start,
    count,
    v,
  )
}

///|
let d_glMulticastGetQueryObjecti64vNV : Dispatch = Dispatch::new(
  "glMulticastGetQueryObjecti64vNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glMulticastGetQueryObjecti64vNV(
  fp : CPtr,
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit = "epoxy_glMulticastGetQueryObjecti64vNV"

///|
pub fn gl_multicast_get_query_objecti64v_nv(
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int64],
) -> Unit {
  epoxy_glMulticastGetQueryObjecti64vNV(
    d_glMulticastGetQueryObjecti64vNV.get(),
    gpu,
    id,
    pname,
    params,
  )
}

///|
let d_glMulticastGetQueryObjectivNV : Dispatch = Dispatch::new(
  "glMulticastGetQueryObjectivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glMulticastGetQueryObjectivNV(
  fp : CPtr,
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glMulticastGetQueryObjectivNV"

///|
pub fn gl_multicast_get_query_objectiv_nv(
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glMulticastGetQueryObjectivNV(
    d_glMulticastGetQueryObjectivNV.get(),
    gpu,
    id,
    pname,
    params,
  )
}

///|
let d_glMulticastGetQueryObjectui64vNV : Dispatch = Dispatch::new(
  "glMulticastGetQueryObjectui64vNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glMulticastGetQueryObjectui64vNV(
  fp : CPtr,
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glMulticastGetQueryObjectui64vNV"

///|
pub fn gl_multicast_get_query_objectui64v_nv(
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glMulticastGetQueryObjectui64vNV(
    d_glMulticastGetQueryObjectui64vNV.get(),
    gpu,
    id,
    pname,
    params,
  )
}

///|
let d_glMulticastGetQueryObjectuivNV : Dispatch = Dispatch::new(
  "glMulticastGetQueryObjectuivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glMulticastGetQueryObjectuivNV(
  fp : CPtr,
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glMulticastGetQueryObjectuivNV"

///|
pub fn gl_multicast_get_query_objectuiv_nv(
  gpu : UInt,
  id : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glMulticastGetQueryObjectuivNV(
    d_glMulticastGetQueryObjectuivNV.get(),
    gpu,
    id,
    pname,
    params,
  )
}

///|
let d_glMulticastScissorArrayvNVX : Dispatch = Dispatch::new(
  "glMulticastScissorArrayvNVX",
)

///|
#borrow(v)
extern "c" fn epoxy_glMulticastScissorArrayvNVX(
  fp : CPtr,
  gpu : UInt,
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit = "epoxy_glMulticastScissorArrayvNVX"

///|
pub fn gl_multicast_scissor_arrayv_nvx(
  gpu : UInt,
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glMulticastScissorArrayvNVX(
    d_glMulticastScissorArrayvNVX.get(),
    gpu,
    first,
    count,
    v,
  )
}

///|
let d_glMulticastViewportArrayvNVX : Dispatch = Dispatch::new(
  "glMulticastViewportArrayvNVX",
)

///|
#borrow(v)
extern "c" fn epoxy_glMulticastViewportArrayvNVX(
  fp : CPtr,
  gpu : UInt,
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glMulticastViewportArrayvNVX"

///|
pub fn gl_multicast_viewport_arrayv_nvx(
  gpu : UInt,
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glMulticastViewportArrayvNVX(
    d_glMulticastViewportArrayvNVX.get(),
    gpu,
    first,
    count,
    v,
  )
}

///|
let d_glMulticastViewportPositionWScaleNVX : Dispatch = Dispatch::new(
  "glMulticastViewportPositionWScaleNVX",
)

///|
extern "c" fn epoxy_glMulticastViewportPositionWScaleNVX(
  fp : CPtr,
  gpu : UInt,
  index : UInt,
  xcoeff : Float,
  ycoeff : Float,
) -> Unit = "epoxy_glMulticastViewportPositionWScaleNVX"

///|
pub fn gl_multicast_viewport_position_w_scale_nvx(
  gpu : UInt,
  index : UInt,
  xcoeff : Float,
  ycoeff : Float,
) -> Unit {
  epoxy_glMulticastViewportPositionWScaleNVX(
    d_glMulticastViewportPositionWScaleNVX.get(),
    gpu,
    index,
    xcoeff,
    ycoeff,
  )
}

///|
let d_glMulticastWaitSyncNV : Dispatch = Dispatch::new("glMulticastWaitSyncNV")

///|
extern "c" fn epoxy_glMulticastWaitSyncNV(
  fp : CPtr,
  signalGpu : UInt,
  waitGpuMask : UInt,
) -> Unit = "epoxy_glMulticastWaitSyncNV"

///|
pub fn gl_multicast_wait_sync_nv(signalGpu : UInt, waitGpuMask : UInt) -> Unit {
  epoxy_glMulticastWaitSyncNV(
    d_glMulticastWaitSyncNV.get(),
    signalGpu,
    waitGpuMask,
  )
}

///|
let d_glNamedBufferAttachMemoryNV : Dispatch = Dispatch::new(
  "glNamedBufferAttachMemoryNV",
)

///|
extern "c" fn epoxy_glNamedBufferAttachMemoryNV(
  fp : CPtr,
  buffer : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glNamedBufferAttachMemoryNV"

///|
pub fn gl_named_buffer_attach_memory_nv(
  buffer : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glNamedBufferAttachMemoryNV(
    d_glNamedBufferAttachMemoryNV.get(),
    buffer,
    memory,
    offset,
  )
}

///|
let d_glNamedBufferData : Dispatch = Dispatch::new("glNamedBufferData")

///|
#borrow(data)
extern "c" fn epoxy_glNamedBufferData(
  fp : CPtr,
  buffer : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit = "epoxy_glNamedBufferData"

///|
pub fn gl_named_buffer_data(
  buffer : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit {
  epoxy_glNamedBufferData(d_glNamedBufferData.get(), buffer, size, data, usage)
}

///|
let d_glNamedBufferDataEXT : Dispatch = Dispatch::new("glNamedBufferDataEXT")

///|
#borrow(data)
extern "c" fn epoxy_glNamedBufferDataEXT(
  fp : CPtr,
  buffer : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit = "epoxy_glNamedBufferDataEXT"

///|
pub fn gl_named_buffer_data_ext(
  buffer : UInt,
  size : Int64,
  data : Bytes,
  usage : UInt,
) -> Unit {
  epoxy_glNamedBufferDataEXT(
    d_glNamedBufferDataEXT.get(),
    buffer,
    size,
    data,
    usage,
  )
}

///|
let d_glNamedBufferPageCommitmentARB : Dispatch = Dispatch::new(
  "glNamedBufferPageCommitmentARB",
)

///|
extern "c" fn epoxy_glNamedBufferPageCommitmentARB(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  commit : Bool,
) -> Unit = "epoxy_glNamedBufferPageCommitmentARB"

///|
pub fn gl_named_buffer_page_commitment_arb(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  commit : Bool,
) -> Unit {
  epoxy_glNamedBufferPageCommitmentARB(
    d_glNamedBufferPageCommitmentARB.get(),
    buffer,
    offset,
    size,
    commit,
  )
}

///|
let d_glNamedBufferPageCommitmentEXT : Dispatch = Dispatch::new(
  "glNamedBufferPageCommitmentEXT",
)

///|
extern "c" fn epoxy_glNamedBufferPageCommitmentEXT(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  commit : Bool,
) -> Unit = "epoxy_glNamedBufferPageCommitmentEXT"

///|
pub fn gl_named_buffer_page_commitment_ext(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  commit : Bool,
) -> Unit {
  epoxy_glNamedBufferPageCommitmentEXT(
    d_glNamedBufferPageCommitmentEXT.get(),
    buffer,
    offset,
    size,
    commit,
  )
}

///|
let d_glNamedBufferPageCommitmentMemNV : Dispatch = Dispatch::new(
  "glNamedBufferPageCommitmentMemNV",
)

///|
extern "c" fn epoxy_glNamedBufferPageCommitmentMemNV(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  memory : UInt,
  memOffset : UInt64,
  commit : Bool,
) -> Unit = "epoxy_glNamedBufferPageCommitmentMemNV"

///|
pub fn gl_named_buffer_page_commitment_mem_nv(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  memory : UInt,
  memOffset : UInt64,
  commit : Bool,
) -> Unit {
  epoxy_glNamedBufferPageCommitmentMemNV(
    d_glNamedBufferPageCommitmentMemNV.get(),
    buffer,
    offset,
    size,
    memory,
    memOffset,
    commit,
  )
}

///|
let d_glNamedBufferStorage : Dispatch = Dispatch::with_aliases(
  "glNamedBufferStorage",
  ["glNamedBufferStorageEXT"],
)

///|
#borrow(data)
extern "c" fn epoxy_glNamedBufferStorage(
  fp : CPtr,
  buffer : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit = "epoxy_glNamedBufferStorage"

///|
pub fn gl_named_buffer_storage(
  buffer : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit {
  epoxy_glNamedBufferStorage(
    d_glNamedBufferStorage.get(),
    buffer,
    size,
    data,
    flags,
  )
}

///|
let d_glNamedBufferStorageExternalEXT : Dispatch = Dispatch::new(
  "glNamedBufferStorageExternalEXT",
)

///|
extern "c" fn epoxy_glNamedBufferStorageExternalEXT(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  clientBuffer : GLeglClientBufferEXT,
  flags : UInt,
) -> Unit = "epoxy_glNamedBufferStorageExternalEXT"

///|
pub fn gl_named_buffer_storage_external_ext(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  clientBuffer : GLeglClientBufferEXT,
  flags : UInt,
) -> Unit {
  epoxy_glNamedBufferStorageExternalEXT(
    d_glNamedBufferStorageExternalEXT.get(),
    buffer,
    offset,
    size,
    clientBuffer,
    flags,
  )
}

///|
let d_glNamedBufferStorageEXT : Dispatch = Dispatch::with_aliases(
  "glNamedBufferStorageEXT",
  ["glNamedBufferStorage"],
)

///|
#borrow(data)
extern "c" fn epoxy_glNamedBufferStorageEXT(
  fp : CPtr,
  buffer : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit = "epoxy_glNamedBufferStorageEXT"

///|
pub fn gl_named_buffer_storage_ext(
  buffer : UInt,
  size : Int64,
  data : Bytes,
  flags : UInt,
) -> Unit {
  epoxy_glNamedBufferStorageEXT(
    d_glNamedBufferStorageEXT.get(),
    buffer,
    size,
    data,
    flags,
  )
}

///|
let d_glNamedBufferStorageMemEXT : Dispatch = Dispatch::new(
  "glNamedBufferStorageMemEXT",
)

///|
extern "c" fn epoxy_glNamedBufferStorageMemEXT(
  fp : CPtr,
  buffer : UInt,
  size : Int64,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glNamedBufferStorageMemEXT"

///|
pub fn gl_named_buffer_storage_mem_ext(
  buffer : UInt,
  size : Int64,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glNamedBufferStorageMemEXT(
    d_glNamedBufferStorageMemEXT.get(),
    buffer,
    size,
    memory,
    offset,
  )
}

///|
let d_glNamedBufferSubData : Dispatch = Dispatch::with_aliases(
  "glNamedBufferSubData",
  ["glNamedBufferSubDataEXT"],
)

///|
#borrow(data)
extern "c" fn epoxy_glNamedBufferSubData(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glNamedBufferSubData"

///|
pub fn gl_named_buffer_sub_data(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glNamedBufferSubData(
    d_glNamedBufferSubData.get(),
    buffer,
    offset,
    size,
    data,
  )
}

///|
let d_glNamedBufferSubDataEXT : Dispatch = Dispatch::with_aliases(
  "glNamedBufferSubDataEXT",
  ["glNamedBufferSubData"],
)

///|
#borrow(data)
extern "c" fn epoxy_glNamedBufferSubDataEXT(
  fp : CPtr,
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit = "epoxy_glNamedBufferSubDataEXT"

///|
pub fn gl_named_buffer_sub_data_ext(
  buffer : UInt,
  offset : Int64,
  size : Int64,
  data : Bytes,
) -> Unit {
  epoxy_glNamedBufferSubDataEXT(
    d_glNamedBufferSubDataEXT.get(),
    buffer,
    offset,
    size,
    data,
  )
}

///|
let d_glNamedCopyBufferSubDataEXT : Dispatch = Dispatch::new(
  "glNamedCopyBufferSubDataEXT",
)

///|
extern "c" fn epoxy_glNamedCopyBufferSubDataEXT(
  fp : CPtr,
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit = "epoxy_glNamedCopyBufferSubDataEXT"

///|
pub fn gl_named_copy_buffer_sub_data_ext(
  readBuffer : UInt,
  writeBuffer : UInt,
  readOffset : Int64,
  writeOffset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glNamedCopyBufferSubDataEXT(
    d_glNamedCopyBufferSubDataEXT.get(),
    readBuffer,
    writeBuffer,
    readOffset,
    writeOffset,
    size,
  )
}

///|
let d_glNamedFramebufferDrawBuffer : Dispatch = Dispatch::new(
  "glNamedFramebufferDrawBuffer",
)

///|
extern "c" fn epoxy_glNamedFramebufferDrawBuffer(
  fp : CPtr,
  framebuffer : UInt,
  buf : UInt,
) -> Unit = "epoxy_glNamedFramebufferDrawBuffer"

///|
pub fn gl_named_framebuffer_draw_buffer(framebuffer : UInt, buf : UInt) -> Unit {
  epoxy_glNamedFramebufferDrawBuffer(
    d_glNamedFramebufferDrawBuffer.get(),
    framebuffer,
    buf,
  )
}

///|
let d_glNamedFramebufferDrawBuffers : Dispatch = Dispatch::new(
  "glNamedFramebufferDrawBuffers",
)

///|
#borrow(bufs)
extern "c" fn epoxy_glNamedFramebufferDrawBuffers(
  fp : CPtr,
  framebuffer : UInt,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit = "epoxy_glNamedFramebufferDrawBuffers"

///|
pub fn gl_named_framebuffer_draw_buffers(
  framebuffer : UInt,
  n : Int,
  bufs : FixedArray[UInt],
) -> Unit {
  epoxy_glNamedFramebufferDrawBuffers(
    d_glNamedFramebufferDrawBuffers.get(),
    framebuffer,
    n,
    bufs,
  )
}

///|
let d_glNamedFramebufferParameteri : Dispatch = Dispatch::new(
  "glNamedFramebufferParameteri",
)

///|
extern "c" fn epoxy_glNamedFramebufferParameteri(
  fp : CPtr,
  framebuffer : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glNamedFramebufferParameteri"

///|
pub fn gl_named_framebuffer_parameteri(
  framebuffer : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glNamedFramebufferParameteri(
    d_glNamedFramebufferParameteri.get(),
    framebuffer,
    pname,
    param,
  )
}

///|
let d_glNamedFramebufferParameteriEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferParameteriEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferParameteriEXT(
  fp : CPtr,
  framebuffer : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glNamedFramebufferParameteriEXT"

///|
pub fn gl_named_framebuffer_parameteri_ext(
  framebuffer : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glNamedFramebufferParameteriEXT(
    d_glNamedFramebufferParameteriEXT.get(),
    framebuffer,
    pname,
    param,
  )
}

///|
let d_glNamedFramebufferReadBuffer : Dispatch = Dispatch::new(
  "glNamedFramebufferReadBuffer",
)

///|
extern "c" fn epoxy_glNamedFramebufferReadBuffer(
  fp : CPtr,
  framebuffer : UInt,
  src : UInt,
) -> Unit = "epoxy_glNamedFramebufferReadBuffer"

///|
pub fn gl_named_framebuffer_read_buffer(framebuffer : UInt, src : UInt) -> Unit {
  epoxy_glNamedFramebufferReadBuffer(
    d_glNamedFramebufferReadBuffer.get(),
    framebuffer,
    src,
  )
}

///|
let d_glNamedFramebufferRenderbuffer : Dispatch = Dispatch::new(
  "glNamedFramebufferRenderbuffer",
)

///|
extern "c" fn epoxy_glNamedFramebufferRenderbuffer(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glNamedFramebufferRenderbuffer"

///|
pub fn gl_named_framebuffer_renderbuffer(
  framebuffer : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit {
  epoxy_glNamedFramebufferRenderbuffer(
    d_glNamedFramebufferRenderbuffer.get(),
    framebuffer,
    attachment,
    renderbuffertarget,
    renderbuffer,
  )
}

///|
let d_glNamedFramebufferRenderbufferEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferRenderbufferEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferRenderbufferEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glNamedFramebufferRenderbufferEXT"

///|
pub fn gl_named_framebuffer_renderbuffer_ext(
  framebuffer : UInt,
  attachment : UInt,
  renderbuffertarget : UInt,
  renderbuffer : UInt,
) -> Unit {
  epoxy_glNamedFramebufferRenderbufferEXT(
    d_glNamedFramebufferRenderbufferEXT.get(),
    framebuffer,
    attachment,
    renderbuffertarget,
    renderbuffer,
  )
}

///|
let d_glNamedFramebufferSampleLocationsfvARB : Dispatch = Dispatch::new(
  "glNamedFramebufferSampleLocationsfvARB",
)

///|
#borrow(v)
extern "c" fn epoxy_glNamedFramebufferSampleLocationsfvARB(
  fp : CPtr,
  framebuffer : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glNamedFramebufferSampleLocationsfvARB"

///|
pub fn gl_named_framebuffer_sample_locationsfv_arb(
  framebuffer : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glNamedFramebufferSampleLocationsfvARB(
    d_glNamedFramebufferSampleLocationsfvARB.get(),
    framebuffer,
    start,
    count,
    v,
  )
}

///|
let d_glNamedFramebufferSampleLocationsfvNV : Dispatch = Dispatch::new(
  "glNamedFramebufferSampleLocationsfvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glNamedFramebufferSampleLocationsfvNV(
  fp : CPtr,
  framebuffer : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glNamedFramebufferSampleLocationsfvNV"

///|
pub fn gl_named_framebuffer_sample_locationsfv_nv(
  framebuffer : UInt,
  start : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glNamedFramebufferSampleLocationsfvNV(
    d_glNamedFramebufferSampleLocationsfvNV.get(),
    framebuffer,
    start,
    count,
    v,
  )
}

///|
let d_glNamedFramebufferTexture : Dispatch = Dispatch::new(
  "glNamedFramebufferTexture",
)

///|
extern "c" fn epoxy_glNamedFramebufferTexture(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glNamedFramebufferTexture"

///|
pub fn gl_named_framebuffer_texture(
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glNamedFramebufferTexture(
    d_glNamedFramebufferTexture.get(),
    framebuffer,
    attachment,
    texture,
    level,
  )
}

///|
let d_glNamedFramebufferSamplePositionsfvAMD : Dispatch = Dispatch::new(
  "glNamedFramebufferSamplePositionsfvAMD",
)

///|
#borrow(values)
extern "c" fn epoxy_glNamedFramebufferSamplePositionsfvAMD(
  fp : CPtr,
  framebuffer : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  values : FixedArray[Float],
) -> Unit = "epoxy_glNamedFramebufferSamplePositionsfvAMD"

///|
pub fn gl_named_framebuffer_sample_positionsfv_amd(
  framebuffer : UInt,
  numsamples : UInt,
  pixelindex : UInt,
  values : FixedArray[Float],
) -> Unit {
  epoxy_glNamedFramebufferSamplePositionsfvAMD(
    d_glNamedFramebufferSamplePositionsfvAMD.get(),
    framebuffer,
    numsamples,
    pixelindex,
    values,
  )
}

///|
let d_glNamedFramebufferTexture1DEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferTexture1DEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferTexture1DEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glNamedFramebufferTexture1DEXT"

///|
pub fn gl_named_framebuffer_texture1_dext(
  framebuffer : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glNamedFramebufferTexture1DEXT(
    d_glNamedFramebufferTexture1DEXT.get(),
    framebuffer,
    attachment,
    textarget,
    texture,
    level,
  )
}

///|
let d_glNamedFramebufferTexture2DEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferTexture2DEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferTexture2DEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glNamedFramebufferTexture2DEXT"

///|
pub fn gl_named_framebuffer_texture2_dext(
  framebuffer : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glNamedFramebufferTexture2DEXT(
    d_glNamedFramebufferTexture2DEXT.get(),
    framebuffer,
    attachment,
    textarget,
    texture,
    level,
  )
}

///|
let d_glNamedFramebufferTexture3DEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferTexture3DEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferTexture3DEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit = "epoxy_glNamedFramebufferTexture3DEXT"

///|
pub fn gl_named_framebuffer_texture3_dext(
  framebuffer : UInt,
  attachment : UInt,
  textarget : UInt,
  texture : UInt,
  level : Int,
  zoffset : Int,
) -> Unit {
  epoxy_glNamedFramebufferTexture3DEXT(
    d_glNamedFramebufferTexture3DEXT.get(),
    framebuffer,
    attachment,
    textarget,
    texture,
    level,
    zoffset,
  )
}

///|
let d_glNamedFramebufferTextureEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferTextureEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferTextureEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glNamedFramebufferTextureEXT"

///|
pub fn gl_named_framebuffer_texture_ext(
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
) -> Unit {
  epoxy_glNamedFramebufferTextureEXT(
    d_glNamedFramebufferTextureEXT.get(),
    framebuffer,
    attachment,
    texture,
    level,
  )
}

///|
let d_glNamedFramebufferTextureFaceEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferTextureFaceEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferTextureFaceEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  face : UInt,
) -> Unit = "epoxy_glNamedFramebufferTextureFaceEXT"

///|
pub fn gl_named_framebuffer_texture_face_ext(
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  face : UInt,
) -> Unit {
  epoxy_glNamedFramebufferTextureFaceEXT(
    d_glNamedFramebufferTextureFaceEXT.get(),
    framebuffer,
    attachment,
    texture,
    level,
    face,
  )
}

///|
let d_glNamedFramebufferTextureLayer : Dispatch = Dispatch::new(
  "glNamedFramebufferTextureLayer",
)

///|
extern "c" fn epoxy_glNamedFramebufferTextureLayer(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit = "epoxy_glNamedFramebufferTextureLayer"

///|
pub fn gl_named_framebuffer_texture_layer(
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit {
  epoxy_glNamedFramebufferTextureLayer(
    d_glNamedFramebufferTextureLayer.get(),
    framebuffer,
    attachment,
    texture,
    level,
    layer,
  )
}

///|
let d_glNamedFramebufferTextureLayerEXT : Dispatch = Dispatch::new(
  "glNamedFramebufferTextureLayerEXT",
)

///|
extern "c" fn epoxy_glNamedFramebufferTextureLayerEXT(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit = "epoxy_glNamedFramebufferTextureLayerEXT"

///|
pub fn gl_named_framebuffer_texture_layer_ext(
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  layer : Int,
) -> Unit {
  epoxy_glNamedFramebufferTextureLayerEXT(
    d_glNamedFramebufferTextureLayerEXT.get(),
    framebuffer,
    attachment,
    texture,
    level,
    layer,
  )
}

///|
let d_glNamedFramebufferTextureMultiviewOVR : Dispatch = Dispatch::new(
  "glNamedFramebufferTextureMultiviewOVR",
)

///|
extern "c" fn epoxy_glNamedFramebufferTextureMultiviewOVR(
  fp : CPtr,
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  baseViewIndex : Int,
  numViews : Int,
) -> Unit = "epoxy_glNamedFramebufferTextureMultiviewOVR"

///|
pub fn gl_named_framebuffer_texture_multiview_ovr(
  framebuffer : UInt,
  attachment : UInt,
  texture : UInt,
  level : Int,
  baseViewIndex : Int,
  numViews : Int,
) -> Unit {
  epoxy_glNamedFramebufferTextureMultiviewOVR(
    d_glNamedFramebufferTextureMultiviewOVR.get(),
    framebuffer,
    attachment,
    texture,
    level,
    baseViewIndex,
    numViews,
  )
}

///|
let d_glNamedProgramLocalParameter4dEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameter4dEXT",
)

///|
extern "c" fn epoxy_glNamedProgramLocalParameter4dEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glNamedProgramLocalParameter4dEXT"

///|
pub fn gl_named_program_local_parameter4d_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glNamedProgramLocalParameter4dEXT(
    d_glNamedProgramLocalParameter4dEXT.get(),
    program,
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glNamedProgramLocalParameter4dvEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameter4dvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glNamedProgramLocalParameter4dvEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glNamedProgramLocalParameter4dvEXT"

///|
pub fn gl_named_program_local_parameter4dv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glNamedProgramLocalParameter4dvEXT(
    d_glNamedProgramLocalParameter4dvEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glNamedProgramLocalParameter4fEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameter4fEXT",
)

///|
extern "c" fn epoxy_glNamedProgramLocalParameter4fEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glNamedProgramLocalParameter4fEXT"

///|
pub fn gl_named_program_local_parameter4f_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glNamedProgramLocalParameter4fEXT(
    d_glNamedProgramLocalParameter4fEXT.get(),
    program,
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glNamedProgramLocalParameter4fvEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameter4fvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glNamedProgramLocalParameter4fvEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glNamedProgramLocalParameter4fvEXT"

///|
pub fn gl_named_program_local_parameter4fv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glNamedProgramLocalParameter4fvEXT(
    d_glNamedProgramLocalParameter4fvEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glNamedProgramLocalParameterI4iEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameterI4iEXT",
)

///|
extern "c" fn epoxy_glNamedProgramLocalParameterI4iEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glNamedProgramLocalParameterI4iEXT"

///|
pub fn gl_named_program_local_parameter_i4i_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glNamedProgramLocalParameterI4iEXT(
    d_glNamedProgramLocalParameterI4iEXT.get(),
    program,
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glNamedProgramLocalParameterI4ivEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameterI4ivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glNamedProgramLocalParameterI4ivEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glNamedProgramLocalParameterI4ivEXT"

///|
pub fn gl_named_program_local_parameter_i4iv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glNamedProgramLocalParameterI4ivEXT(
    d_glNamedProgramLocalParameterI4ivEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glNamedProgramLocalParameterI4uiEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameterI4uiEXT",
)

///|
extern "c" fn epoxy_glNamedProgramLocalParameterI4uiEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit = "epoxy_glNamedProgramLocalParameterI4uiEXT"

///|
pub fn gl_named_program_local_parameter_i4ui_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit {
  epoxy_glNamedProgramLocalParameterI4uiEXT(
    d_glNamedProgramLocalParameterI4uiEXT.get(),
    program,
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glNamedProgramLocalParameterI4uivEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameterI4uivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glNamedProgramLocalParameterI4uivEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glNamedProgramLocalParameterI4uivEXT"

///|
pub fn gl_named_program_local_parameter_i4uiv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glNamedProgramLocalParameterI4uivEXT(
    d_glNamedProgramLocalParameterI4uivEXT.get(),
    program,
    target,
    index,
    params,
  )
}

///|
let d_glNamedProgramLocalParameters4fvEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParameters4fvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glNamedProgramLocalParameters4fvEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glNamedProgramLocalParameters4fvEXT"

///|
pub fn gl_named_program_local_parameters4fv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glNamedProgramLocalParameters4fvEXT(
    d_glNamedProgramLocalParameters4fvEXT.get(),
    program,
    target,
    index,
    count,
    params,
  )
}

///|
let d_glNamedProgramLocalParametersI4ivEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParametersI4ivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glNamedProgramLocalParametersI4ivEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glNamedProgramLocalParametersI4ivEXT"

///|
pub fn gl_named_program_local_parameters_i4iv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glNamedProgramLocalParametersI4ivEXT(
    d_glNamedProgramLocalParametersI4ivEXT.get(),
    program,
    target,
    index,
    count,
    params,
  )
}

///|
let d_glNamedProgramLocalParametersI4uivEXT : Dispatch = Dispatch::new(
  "glNamedProgramLocalParametersI4uivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glNamedProgramLocalParametersI4uivEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glNamedProgramLocalParametersI4uivEXT"

///|
pub fn gl_named_program_local_parameters_i4uiv_ext(
  program : UInt,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glNamedProgramLocalParametersI4uivEXT(
    d_glNamedProgramLocalParametersI4uivEXT.get(),
    program,
    target,
    index,
    count,
    params,
  )
}

///|
let d_glNamedProgramStringEXT : Dispatch = Dispatch::new(
  "glNamedProgramStringEXT",
)

///|
#borrow(string)
extern "c" fn epoxy_glNamedProgramStringEXT(
  fp : CPtr,
  program : UInt,
  target : UInt,
  format : UInt,
  len : Int,
  string : Bytes,
) -> Unit = "epoxy_glNamedProgramStringEXT"

///|
pub fn gl_named_program_string_ext(
  program : UInt,
  target : UInt,
  format : UInt,
  len : Int,
  string : Bytes,
) -> Unit {
  epoxy_glNamedProgramStringEXT(
    d_glNamedProgramStringEXT.get(),
    program,
    target,
    format,
    len,
    string,
  )
}

///|
let d_glNamedRenderbufferStorage : Dispatch = Dispatch::new(
  "glNamedRenderbufferStorage",
)

///|
extern "c" fn epoxy_glNamedRenderbufferStorage(
  fp : CPtr,
  renderbuffer : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glNamedRenderbufferStorage"

///|
pub fn gl_named_renderbuffer_storage(
  renderbuffer : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glNamedRenderbufferStorage(
    d_glNamedRenderbufferStorage.get(),
    renderbuffer,
    internalformat,
    width,
    height,
  )
}

///|
let d_glNamedRenderbufferStorageEXT : Dispatch = Dispatch::new(
  "glNamedRenderbufferStorageEXT",
)

///|
extern "c" fn epoxy_glNamedRenderbufferStorageEXT(
  fp : CPtr,
  renderbuffer : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glNamedRenderbufferStorageEXT"

///|
pub fn gl_named_renderbuffer_storage_ext(
  renderbuffer : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glNamedRenderbufferStorageEXT(
    d_glNamedRenderbufferStorageEXT.get(),
    renderbuffer,
    internalformat,
    width,
    height,
  )
}

///|
let d_glNamedRenderbufferStorageMultisample : Dispatch = Dispatch::new(
  "glNamedRenderbufferStorageMultisample",
)

///|
extern "c" fn epoxy_glNamedRenderbufferStorageMultisample(
  fp : CPtr,
  renderbuffer : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glNamedRenderbufferStorageMultisample"

///|
pub fn gl_named_renderbuffer_storage_multisample(
  renderbuffer : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glNamedRenderbufferStorageMultisample(
    d_glNamedRenderbufferStorageMultisample.get(),
    renderbuffer,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glNamedRenderbufferStorageMultisampleAdvancedAMD : Dispatch = Dispatch::new(
  "glNamedRenderbufferStorageMultisampleAdvancedAMD",
)

///|
extern "c" fn epoxy_glNamedRenderbufferStorageMultisampleAdvancedAMD(
  fp : CPtr,
  renderbuffer : UInt,
  samples : Int,
  storageSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glNamedRenderbufferStorageMultisampleAdvancedAMD"

///|
pub fn gl_named_renderbuffer_storage_multisample_advanced_amd(
  renderbuffer : UInt,
  samples : Int,
  storageSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glNamedRenderbufferStorageMultisampleAdvancedAMD(
    d_glNamedRenderbufferStorageMultisampleAdvancedAMD.get(),
    renderbuffer,
    samples,
    storageSamples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glNamedRenderbufferStorageMultisampleCoverageEXT : Dispatch = Dispatch::new(
  "glNamedRenderbufferStorageMultisampleCoverageEXT",
)

///|
extern "c" fn epoxy_glNamedRenderbufferStorageMultisampleCoverageEXT(
  fp : CPtr,
  renderbuffer : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glNamedRenderbufferStorageMultisampleCoverageEXT"

///|
pub fn gl_named_renderbuffer_storage_multisample_coverage_ext(
  renderbuffer : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glNamedRenderbufferStorageMultisampleCoverageEXT(
    d_glNamedRenderbufferStorageMultisampleCoverageEXT.get(),
    renderbuffer,
    coverageSamples,
    colorSamples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glNamedRenderbufferStorageMultisampleEXT : Dispatch = Dispatch::new(
  "glNamedRenderbufferStorageMultisampleEXT",
)

///|
extern "c" fn epoxy_glNamedRenderbufferStorageMultisampleEXT(
  fp : CPtr,
  renderbuffer : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glNamedRenderbufferStorageMultisampleEXT"

///|
pub fn gl_named_renderbuffer_storage_multisample_ext(
  renderbuffer : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glNamedRenderbufferStorageMultisampleEXT(
    d_glNamedRenderbufferStorageMultisampleEXT.get(),
    renderbuffer,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glNamedStringARB : Dispatch = Dispatch::new("glNamedStringARB")

///|
#borrow(name, string)
extern "c" fn epoxy_glNamedStringARB(
  fp : CPtr,
  type_ : UInt,
  namelen : Int,
  name : Bytes,
  stringlen : Int,
  string : Bytes,
) -> Unit = "epoxy_glNamedStringARB"

///|
pub fn gl_named_string_arb(
  type_ : UInt,
  namelen : Int,
  name : Bytes,
  stringlen : Int,
  string : Bytes,
) -> Unit {
  epoxy_glNamedStringARB(
    d_glNamedStringARB.get(),
    type_,
    namelen,
    name,
    stringlen,
    string,
  )
}

///|
let d_glNewList : Dispatch = Dispatch::new("glNewList")

///|
extern "c" fn epoxy_glNewList(fp : CPtr, list : UInt, mode : UInt) -> Unit = "epoxy_glNewList"

///|
pub fn gl_new_list(list : UInt, mode : UInt) -> Unit {
  epoxy_glNewList(d_glNewList.get(), list, mode)
}

///|
let d_glNewObjectBufferATI : Dispatch = Dispatch::new("glNewObjectBufferATI")

///|
#borrow(pointer)
extern "c" fn epoxy_glNewObjectBufferATI(
  fp : CPtr,
  size : Int,
  pointer : Bytes,
  usage : UInt,
) -> UInt = "epoxy_glNewObjectBufferATI"

///|
pub fn gl_new_object_buffer_ati(
  size : Int,
  pointer : Bytes,
  usage : UInt,
) -> UInt {
  epoxy_glNewObjectBufferATI(d_glNewObjectBufferATI.get(), size, pointer, usage)
}

///|
let d_glNormal3b : Dispatch = Dispatch::new("glNormal3b")

///|
extern "c" fn epoxy_glNormal3b(fp : CPtr, nx : Int, ny : Int, nz : Int) -> Unit = "epoxy_glNormal3b"

///|
pub fn gl_normal3b(nx : Int, ny : Int, nz : Int) -> Unit {
  epoxy_glNormal3b(d_glNormal3b.get(), nx, ny, nz)
}

///|
let d_glNormal3bv : Dispatch = Dispatch::new("glNormal3bv")

///|
#borrow(v)
extern "c" fn epoxy_glNormal3bv(fp : CPtr, v : Bytes) -> Unit = "epoxy_glNormal3bv"

///|
pub fn gl_normal3bv(v : Bytes) -> Unit {
  epoxy_glNormal3bv(d_glNormal3bv.get(), v)
}

///|
let d_glNormal3d : Dispatch = Dispatch::new("glNormal3d")

///|
extern "c" fn epoxy_glNormal3d(
  fp : CPtr,
  nx : Double,
  ny : Double,
  nz : Double,
) -> Unit = "epoxy_glNormal3d"

///|
pub fn gl_normal3d(nx : Double, ny : Double, nz : Double) -> Unit {
  epoxy_glNormal3d(d_glNormal3d.get(), nx, ny, nz)
}

///|
let d_glNormal3dv : Dispatch = Dispatch::new("glNormal3dv")

///|
#borrow(v)
extern "c" fn epoxy_glNormal3dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glNormal3dv"

///|
pub fn gl_normal3dv(v : FixedArray[Double]) -> Unit {
  epoxy_glNormal3dv(d_glNormal3dv.get(), v)
}

///|
let d_glNormal3f : Dispatch = Dispatch::new("glNormal3f")

///|
extern "c" fn epoxy_glNormal3f(
  fp : CPtr,
  nx : Float,
  ny : Float,
  nz : Float,
) -> Unit = "epoxy_glNormal3f"

///|
pub fn gl_normal3f(nx : Float, ny : Float, nz : Float) -> Unit {
  epoxy_glNormal3f(d_glNormal3f.get(), nx, ny, nz)
}

///|
let d_glNormal3fVertex3fSUN : Dispatch = Dispatch::new("glNormal3fVertex3fSUN")

///|
extern "c" fn epoxy_glNormal3fVertex3fSUN(
  fp : CPtr,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glNormal3fVertex3fSUN"

///|
pub fn gl_normal3f_vertex3f_sun(
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glNormal3fVertex3fSUN(
    d_glNormal3fVertex3fSUN.get(),
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glNormal3fVertex3fvSUN",
)

///|
#borrow(n, v)
extern "c" fn epoxy_glNormal3fVertex3fvSUN(
  fp : CPtr,
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glNormal3fVertex3fvSUN"

///|
pub fn gl_normal3f_vertex3fv_sun(
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glNormal3fVertex3fvSUN(d_glNormal3fVertex3fvSUN.get(), n, v)
}

///|
let d_glNormal3fv : Dispatch = Dispatch::new("glNormal3fv")

///|
#borrow(v)
extern "c" fn epoxy_glNormal3fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glNormal3fv"

///|
pub fn gl_normal3fv(v : FixedArray[Float]) -> Unit {
  epoxy_glNormal3fv(d_glNormal3fv.get(), v)
}

///|
let d_glNormal3hNV : Dispatch = Dispatch::new("glNormal3hNV")

///|
extern "c" fn epoxy_glNormal3hNV(
  fp : CPtr,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit = "epoxy_glNormal3hNV"

///|
pub fn gl_normal3h_nv(nx : Int, ny : Int, nz : Int) -> Unit {
  epoxy_glNormal3hNV(d_glNormal3hNV.get(), nx, ny, nz)
}

///|
let d_glNormal3hvNV : Dispatch = Dispatch::new("glNormal3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glNormal3hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glNormal3hvNV"

///|
pub fn gl_normal3hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glNormal3hvNV(d_glNormal3hvNV.get(), v)
}

///|
let d_glNormal3i : Dispatch = Dispatch::new("glNormal3i")

///|
extern "c" fn epoxy_glNormal3i(fp : CPtr, nx : Int, ny : Int, nz : Int) -> Unit = "epoxy_glNormal3i"

///|
pub fn gl_normal3i(nx : Int, ny : Int, nz : Int) -> Unit {
  epoxy_glNormal3i(d_glNormal3i.get(), nx, ny, nz)
}

///|
let d_glNormal3iv : Dispatch = Dispatch::new("glNormal3iv")

///|
#borrow(v)
extern "c" fn epoxy_glNormal3iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glNormal3iv"

///|
pub fn gl_normal3iv(v : FixedArray[Int]) -> Unit {
  epoxy_glNormal3iv(d_glNormal3iv.get(), v)
}

///|
let d_glNormal3s : Dispatch = Dispatch::new("glNormal3s")

///|
extern "c" fn epoxy_glNormal3s(fp : CPtr, nx : Int, ny : Int, nz : Int) -> Unit = "epoxy_glNormal3s"

///|
pub fn gl_normal3s(nx : Int, ny : Int, nz : Int) -> Unit {
  epoxy_glNormal3s(d_glNormal3s.get(), nx, ny, nz)
}

///|
let d_glNormal3sv : Dispatch = Dispatch::new("glNormal3sv")

///|
#borrow(v)
extern "c" fn epoxy_glNormal3sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glNormal3sv"

///|
pub fn gl_normal3sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glNormal3sv(d_glNormal3sv.get(), v)
}

///|
let d_glNormal3x : Dispatch = Dispatch::new("glNormal3x")

///|
extern "c" fn epoxy_glNormal3x(fp : CPtr, nx : Int, ny : Int, nz : Int) -> Unit = "epoxy_glNormal3x"

///|
pub fn gl_normal3x(nx : Int, ny : Int, nz : Int) -> Unit {
  epoxy_glNormal3x(d_glNormal3x.get(), nx, ny, nz)
}

///|
let d_glNormal3xOES : Dispatch = Dispatch::new("glNormal3xOES")

///|
extern "c" fn epoxy_glNormal3xOES(
  fp : CPtr,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit = "epoxy_glNormal3xOES"

///|
pub fn gl_normal3x_oes(nx : Int, ny : Int, nz : Int) -> Unit {
  epoxy_glNormal3xOES(d_glNormal3xOES.get(), nx, ny, nz)
}

///|
let d_glNormal3xvOES : Dispatch = Dispatch::new("glNormal3xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glNormal3xvOES(fp : CPtr, coords : FixedArray[Int]) -> Unit = "epoxy_glNormal3xvOES"

///|
pub fn gl_normal3xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glNormal3xvOES(d_glNormal3xvOES.get(), coords)
}

///|
let d_glNormalFormatNV : Dispatch = Dispatch::new("glNormalFormatNV")

///|
extern "c" fn epoxy_glNormalFormatNV(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glNormalFormatNV"

///|
pub fn gl_normal_format_nv(type_ : UInt, stride : Int) -> Unit {
  epoxy_glNormalFormatNV(d_glNormalFormatNV.get(), type_, stride)
}

///|
let d_glNormalP3ui : Dispatch = Dispatch::new("glNormalP3ui")

///|
extern "c" fn epoxy_glNormalP3ui(
  fp : CPtr,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glNormalP3ui"

///|
pub fn gl_normal_p3ui(type_ : UInt, coords : UInt) -> Unit {
  epoxy_glNormalP3ui(d_glNormalP3ui.get(), type_, coords)
}

///|
let d_glNormalP3uiv : Dispatch = Dispatch::new("glNormalP3uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glNormalP3uiv(
  fp : CPtr,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glNormalP3uiv"

///|
pub fn gl_normal_p3uiv(type_ : UInt, coords : FixedArray[UInt]) -> Unit {
  epoxy_glNormalP3uiv(d_glNormalP3uiv.get(), type_, coords)
}

///|
let d_glNormalPointer : Dispatch = Dispatch::new("glNormalPointer")

///|
#borrow(pointer)
extern "c" fn epoxy_glNormalPointer(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glNormalPointer"

///|
pub fn gl_normal_pointer(type_ : UInt, stride : Int, pointer : Bytes) -> Unit {
  epoxy_glNormalPointer(d_glNormalPointer.get(), type_, stride, pointer)
}

///|
let d_glNormalPointerEXT : Dispatch = Dispatch::new("glNormalPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glNormalPointerEXT(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glNormalPointerEXT"

///|
pub fn gl_normal_pointer_ext(
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glNormalPointerEXT(
    d_glNormalPointerEXT.get(),
    type_,
    stride,
    count,
    pointer,
  )
}

///|
let d_glNormalStream3bATI : Dispatch = Dispatch::new("glNormalStream3bATI")

///|
extern "c" fn epoxy_glNormalStream3bATI(
  fp : CPtr,
  stream : UInt,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit = "epoxy_glNormalStream3bATI"

///|
pub fn gl_normal_stream3b_ati(
  stream : UInt,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit {
  epoxy_glNormalStream3bATI(d_glNormalStream3bATI.get(), stream, nx, ny, nz)
}

///|
let d_glNormalStream3bvATI : Dispatch = Dispatch::new("glNormalStream3bvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glNormalStream3bvATI(
  fp : CPtr,
  stream : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glNormalStream3bvATI"

///|
pub fn gl_normal_stream3bv_ati(stream : UInt, coords : Bytes) -> Unit {
  epoxy_glNormalStream3bvATI(d_glNormalStream3bvATI.get(), stream, coords)
}

///|
let d_glNormalStream3dATI : Dispatch = Dispatch::new("glNormalStream3dATI")

///|
extern "c" fn epoxy_glNormalStream3dATI(
  fp : CPtr,
  stream : UInt,
  nx : Double,
  ny : Double,
  nz : Double,
) -> Unit = "epoxy_glNormalStream3dATI"

///|
pub fn gl_normal_stream3d_ati(
  stream : UInt,
  nx : Double,
  ny : Double,
  nz : Double,
) -> Unit {
  epoxy_glNormalStream3dATI(d_glNormalStream3dATI.get(), stream, nx, ny, nz)
}

///|
let d_glNormalStream3dvATI : Dispatch = Dispatch::new("glNormalStream3dvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glNormalStream3dvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit = "epoxy_glNormalStream3dvATI"

///|
pub fn gl_normal_stream3dv_ati(
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit {
  epoxy_glNormalStream3dvATI(d_glNormalStream3dvATI.get(), stream, coords)
}

///|
let d_glNormalStream3fATI : Dispatch = Dispatch::new("glNormalStream3fATI")

///|
extern "c" fn epoxy_glNormalStream3fATI(
  fp : CPtr,
  stream : UInt,
  nx : Float,
  ny : Float,
  nz : Float,
) -> Unit = "epoxy_glNormalStream3fATI"

///|
pub fn gl_normal_stream3f_ati(
  stream : UInt,
  nx : Float,
  ny : Float,
  nz : Float,
) -> Unit {
  epoxy_glNormalStream3fATI(d_glNormalStream3fATI.get(), stream, nx, ny, nz)
}

///|
let d_glNormalStream3fvATI : Dispatch = Dispatch::new("glNormalStream3fvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glNormalStream3fvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit = "epoxy_glNormalStream3fvATI"

///|
pub fn gl_normal_stream3fv_ati(
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit {
  epoxy_glNormalStream3fvATI(d_glNormalStream3fvATI.get(), stream, coords)
}

///|
let d_glNormalStream3iATI : Dispatch = Dispatch::new("glNormalStream3iATI")

///|
extern "c" fn epoxy_glNormalStream3iATI(
  fp : CPtr,
  stream : UInt,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit = "epoxy_glNormalStream3iATI"

///|
pub fn gl_normal_stream3i_ati(
  stream : UInt,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit {
  epoxy_glNormalStream3iATI(d_glNormalStream3iATI.get(), stream, nx, ny, nz)
}

///|
let d_glNormalStream3ivATI : Dispatch = Dispatch::new("glNormalStream3ivATI")

///|
#borrow(coords)
extern "c" fn epoxy_glNormalStream3ivATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glNormalStream3ivATI"

///|
pub fn gl_normal_stream3iv_ati(stream : UInt, coords : FixedArray[Int]) -> Unit {
  epoxy_glNormalStream3ivATI(d_glNormalStream3ivATI.get(), stream, coords)
}

///|
let d_glNormalStream3sATI : Dispatch = Dispatch::new("glNormalStream3sATI")

///|
extern "c" fn epoxy_glNormalStream3sATI(
  fp : CPtr,
  stream : UInt,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit = "epoxy_glNormalStream3sATI"

///|
pub fn gl_normal_stream3s_ati(
  stream : UInt,
  nx : Int,
  ny : Int,
  nz : Int,
) -> Unit {
  epoxy_glNormalStream3sATI(d_glNormalStream3sATI.get(), stream, nx, ny, nz)
}

///|
let d_glNormalStream3svATI : Dispatch = Dispatch::new("glNormalStream3svATI")

///|
#borrow(coords)
extern "c" fn epoxy_glNormalStream3svATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit = "epoxy_glNormalStream3svATI"

///|
pub fn gl_normal_stream3sv_ati(
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit {
  epoxy_glNormalStream3svATI(d_glNormalStream3svATI.get(), stream, coords)
}

///|
let d_glObjectLabel : Dispatch = Dispatch::with_aliases("glObjectLabel", [
  "glObjectLabelKHR",
])

///|
#borrow(label)
extern "c" fn epoxy_glObjectLabel(
  fp : CPtr,
  identifier : UInt,
  name : UInt,
  length : Int,
  label : Bytes,
) -> Unit = "epoxy_glObjectLabel"

///|
pub fn gl_object_label(
  identifier : UInt,
  name : UInt,
  length : Int,
  label : Bytes,
) -> Unit {
  epoxy_glObjectLabel(d_glObjectLabel.get(), identifier, name, length, label)
}

///|
let d_glObjectLabelKHR : Dispatch = Dispatch::with_aliases("glObjectLabelKHR", [
  "glObjectLabel",
])

///|
#borrow(label)
extern "c" fn epoxy_glObjectLabelKHR(
  fp : CPtr,
  identifier : UInt,
  name : UInt,
  length : Int,
  label : Bytes,
) -> Unit = "epoxy_glObjectLabelKHR"

///|
pub fn gl_object_label_khr(
  identifier : UInt,
  name : UInt,
  length : Int,
  label : Bytes,
) -> Unit {
  epoxy_glObjectLabelKHR(
    d_glObjectLabelKHR.get(),
    identifier,
    name,
    length,
    label,
  )
}

///|
let d_glObjectPtrLabel : Dispatch = Dispatch::with_aliases("glObjectPtrLabel", [
  "glObjectPtrLabelKHR",
])

///|
#borrow(ptr, label)
extern "c" fn epoxy_glObjectPtrLabel(
  fp : CPtr,
  ptr : Bytes,
  length : Int,
  label : Bytes,
) -> Unit = "epoxy_glObjectPtrLabel"

///|
pub fn gl_object_ptr_label(ptr : Bytes, length : Int, label : Bytes) -> Unit {
  epoxy_glObjectPtrLabel(d_glObjectPtrLabel.get(), ptr, length, label)
}

///|
let d_glObjectPtrLabelKHR : Dispatch = Dispatch::with_aliases(
  "glObjectPtrLabelKHR",
  ["glObjectPtrLabel"],
)

///|
#borrow(ptr, label)
extern "c" fn epoxy_glObjectPtrLabelKHR(
  fp : CPtr,
  ptr : Bytes,
  length : Int,
  label : Bytes,
) -> Unit = "epoxy_glObjectPtrLabelKHR"

///|
pub fn gl_object_ptr_label_khr(
  ptr : Bytes,
  length : Int,
  label : Bytes,
) -> Unit {
  epoxy_glObjectPtrLabelKHR(d_glObjectPtrLabelKHR.get(), ptr, length, label)
}

///|
let d_glObjectPurgeableAPPLE : Dispatch = Dispatch::new(
  "glObjectPurgeableAPPLE",
)

///|
extern "c" fn epoxy_glObjectPurgeableAPPLE(
  fp : CPtr,
  objectType : UInt,
  name : UInt,
  option : UInt,
) -> UInt = "epoxy_glObjectPurgeableAPPLE"

///|
pub fn gl_object_purgeable_apple(
  objectType : UInt,
  name : UInt,
  option : UInt,
) -> UInt {
  epoxy_glObjectPurgeableAPPLE(
    d_glObjectPurgeableAPPLE.get(),
    objectType,
    name,
    option,
  )
}

///|
let d_glObjectUnpurgeableAPPLE : Dispatch = Dispatch::new(
  "glObjectUnpurgeableAPPLE",
)

///|
extern "c" fn epoxy_glObjectUnpurgeableAPPLE(
  fp : CPtr,
  objectType : UInt,
  name : UInt,
  option : UInt,
) -> UInt = "epoxy_glObjectUnpurgeableAPPLE"

///|
pub fn gl_object_unpurgeable_apple(
  objectType : UInt,
  name : UInt,
  option : UInt,
) -> UInt {
  epoxy_glObjectUnpurgeableAPPLE(
    d_glObjectUnpurgeableAPPLE.get(),
    objectType,
    name,
    option,
  )
}

///|
let d_glOrtho : Dispatch = Dispatch::new("glOrtho")

///|
extern "c" fn epoxy_glOrtho(
  fp : CPtr,
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit = "epoxy_glOrtho"

///|
pub fn gl_ortho(
  left : Double,
  right : Double,
  bottom : Double,
  top : Double,
  zNear : Double,
  zFar : Double,
) -> Unit {
  epoxy_glOrtho(d_glOrtho.get(), left, right, bottom, top, zNear, zFar)
}

///|
let d_glOrthof : Dispatch = Dispatch::new("glOrthof")

///|
extern "c" fn epoxy_glOrthof(
  fp : CPtr,
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit = "epoxy_glOrthof"

///|
pub fn gl_orthof(
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit {
  epoxy_glOrthof(d_glOrthof.get(), l, r, b, t, n, f)
}

///|
let d_glOrthofOES : Dispatch = Dispatch::new("glOrthofOES")

///|
extern "c" fn epoxy_glOrthofOES(
  fp : CPtr,
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit = "epoxy_glOrthofOES"

///|
pub fn gl_orthof_oes(
  l : Float,
  r : Float,
  b : Float,
  t : Float,
  n : Float,
  f : Float,
) -> Unit {
  epoxy_glOrthofOES(d_glOrthofOES.get(), l, r, b, t, n, f)
}

///|
let d_glOrthox : Dispatch = Dispatch::new("glOrthox")

///|
extern "c" fn epoxy_glOrthox(
  fp : CPtr,
  l : Int,
  r : Int,
  b : Int,
  t : Int,
  n : Int,
  f : Int,
) -> Unit = "epoxy_glOrthox"

///|
pub fn gl_orthox(l : Int, r : Int, b : Int, t : Int, n : Int, f : Int) -> Unit {
  epoxy_glOrthox(d_glOrthox.get(), l, r, b, t, n, f)
}

///|
let d_glOrthoxOES : Dispatch = Dispatch::new("glOrthoxOES")

///|
extern "c" fn epoxy_glOrthoxOES(
  fp : CPtr,
  l : Int,
  r : Int,
  b : Int,
  t : Int,
  n : Int,
  f : Int,
) -> Unit = "epoxy_glOrthoxOES"

///|
pub fn gl_orthox_oes(
  l : Int,
  r : Int,
  b : Int,
  t : Int,
  n : Int,
  f : Int,
) -> Unit {
  epoxy_glOrthoxOES(d_glOrthoxOES.get(), l, r, b, t, n, f)
}

///|
let d_glPNTrianglesfATI : Dispatch = Dispatch::new("glPNTrianglesfATI")

///|
extern "c" fn epoxy_glPNTrianglesfATI(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPNTrianglesfATI"

///|
pub fn gl_pn_trianglesf_ati(pname : UInt, param : Float) -> Unit {
  epoxy_glPNTrianglesfATI(d_glPNTrianglesfATI.get(), pname, param)
}

///|
let d_glPNTrianglesiATI : Dispatch = Dispatch::new("glPNTrianglesiATI")

///|
extern "c" fn epoxy_glPNTrianglesiATI(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPNTrianglesiATI"

///|
pub fn gl_pn_trianglesi_ati(pname : UInt, param : Int) -> Unit {
  epoxy_glPNTrianglesiATI(d_glPNTrianglesiATI.get(), pname, param)
}

///|
let d_glPassTexCoordATI : Dispatch = Dispatch::new("glPassTexCoordATI")

///|
extern "c" fn epoxy_glPassTexCoordATI(
  fp : CPtr,
  dst : UInt,
  coord : UInt,
  swizzle : UInt,
) -> Unit = "epoxy_glPassTexCoordATI"

///|
pub fn gl_pass_tex_coord_ati(dst : UInt, coord : UInt, swizzle : UInt) -> Unit {
  epoxy_glPassTexCoordATI(d_glPassTexCoordATI.get(), dst, coord, swizzle)
}

///|
let d_glPassThrough : Dispatch = Dispatch::new("glPassThrough")

///|
extern "c" fn epoxy_glPassThrough(fp : CPtr, token : Float) -> Unit = "epoxy_glPassThrough"

///|
pub fn gl_pass_through(token : Float) -> Unit {
  epoxy_glPassThrough(d_glPassThrough.get(), token)
}

///|
let d_glPassThroughxOES : Dispatch = Dispatch::new("glPassThroughxOES")

///|
extern "c" fn epoxy_glPassThroughxOES(fp : CPtr, token : Int) -> Unit = "epoxy_glPassThroughxOES"

///|
pub fn gl_pass_throughx_oes(token : Int) -> Unit {
  epoxy_glPassThroughxOES(d_glPassThroughxOES.get(), token)
}

///|
let d_glPatchParameterfv : Dispatch = Dispatch::new("glPatchParameterfv")

///|
#borrow(values)
extern "c" fn epoxy_glPatchParameterfv(
  fp : CPtr,
  pname : UInt,
  values : FixedArray[Float],
) -> Unit = "epoxy_glPatchParameterfv"

///|
pub fn gl_patch_parameterfv(pname : UInt, values : FixedArray[Float]) -> Unit {
  epoxy_glPatchParameterfv(d_glPatchParameterfv.get(), pname, values)
}

///|
let d_glPatchParameteri : Dispatch = Dispatch::with_aliases(
  "glPatchParameteri",
  ["glPatchParameteriEXT", "glPatchParameteriOES"],
)

///|
extern "c" fn epoxy_glPatchParameteri(
  fp : CPtr,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glPatchParameteri"

///|
pub fn gl_patch_parameteri(pname : UInt, value : Int) -> Unit {
  epoxy_glPatchParameteri(d_glPatchParameteri.get(), pname, value)
}

///|
let d_glPatchParameteriEXT : Dispatch = Dispatch::with_aliases(
  "glPatchParameteriEXT",
  ["glPatchParameteri", "glPatchParameteriOES"],
)

///|
extern "c" fn epoxy_glPatchParameteriEXT(
  fp : CPtr,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glPatchParameteriEXT"

///|
pub fn gl_patch_parameteri_ext(pname : UInt, value : Int) -> Unit {
  epoxy_glPatchParameteriEXT(d_glPatchParameteriEXT.get(), pname, value)
}

///|
let d_glPatchParameteriOES : Dispatch = Dispatch::with_aliases(
  "glPatchParameteriOES",
  ["glPatchParameteri", "glPatchParameteriEXT"],
)

///|
extern "c" fn epoxy_glPatchParameteriOES(
  fp : CPtr,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glPatchParameteriOES"

///|
pub fn gl_patch_parameteri_oes(pname : UInt, value : Int) -> Unit {
  epoxy_glPatchParameteriOES(d_glPatchParameteriOES.get(), pname, value)
}

///|
let d_glPathColorGenNV : Dispatch = Dispatch::new("glPathColorGenNV")

///|
#borrow(coeffs)
extern "c" fn epoxy_glPathColorGenNV(
  fp : CPtr,
  color : UInt,
  genMode : UInt,
  colorFormat : UInt,
  coeffs : FixedArray[Float],
) -> Unit = "epoxy_glPathColorGenNV"

///|
pub fn gl_path_color_gen_nv(
  color : UInt,
  genMode : UInt,
  colorFormat : UInt,
  coeffs : FixedArray[Float],
) -> Unit {
  epoxy_glPathColorGenNV(
    d_glPathColorGenNV.get(),
    color,
    genMode,
    colorFormat,
    coeffs,
  )
}

///|
let d_glPathCommandsNV : Dispatch = Dispatch::new("glPathCommandsNV")

///|
#borrow(commands, coords)
extern "c" fn epoxy_glPathCommandsNV(
  fp : CPtr,
  path : UInt,
  numCommands : Int,
  commands : Bytes,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glPathCommandsNV"

///|
pub fn gl_path_commands_nv(
  path : UInt,
  numCommands : Int,
  commands : Bytes,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit {
  epoxy_glPathCommandsNV(
    d_glPathCommandsNV.get(),
    path,
    numCommands,
    commands,
    numCoords,
    coordType,
    coords,
  )
}

///|
let d_glPathCoordsNV : Dispatch = Dispatch::new("glPathCoordsNV")

///|
#borrow(coords)
extern "c" fn epoxy_glPathCoordsNV(
  fp : CPtr,
  path : UInt,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glPathCoordsNV"

///|
pub fn gl_path_coords_nv(
  path : UInt,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit {
  epoxy_glPathCoordsNV(
    d_glPathCoordsNV.get(),
    path,
    numCoords,
    coordType,
    coords,
  )
}

///|
let d_glPathCoverDepthFuncNV : Dispatch = Dispatch::new(
  "glPathCoverDepthFuncNV",
)

///|
extern "c" fn epoxy_glPathCoverDepthFuncNV(fp : CPtr, func : UInt) -> Unit = "epoxy_glPathCoverDepthFuncNV"

///|
pub fn gl_path_cover_depth_func_nv(func : UInt) -> Unit {
  epoxy_glPathCoverDepthFuncNV(d_glPathCoverDepthFuncNV.get(), func)
}

///|
let d_glPathDashArrayNV : Dispatch = Dispatch::new("glPathDashArrayNV")

///|
#borrow(dashArray)
extern "c" fn epoxy_glPathDashArrayNV(
  fp : CPtr,
  path : UInt,
  dashCount : Int,
  dashArray : FixedArray[Float],
) -> Unit = "epoxy_glPathDashArrayNV"

///|
pub fn gl_path_dash_array_nv(
  path : UInt,
  dashCount : Int,
  dashArray : FixedArray[Float],
) -> Unit {
  epoxy_glPathDashArrayNV(d_glPathDashArrayNV.get(), path, dashCount, dashArray)
}

///|
let d_glPathFogGenNV : Dispatch = Dispatch::new("glPathFogGenNV")

///|
extern "c" fn epoxy_glPathFogGenNV(fp : CPtr, genMode : UInt) -> Unit = "epoxy_glPathFogGenNV"

///|
pub fn gl_path_fog_gen_nv(genMode : UInt) -> Unit {
  epoxy_glPathFogGenNV(d_glPathFogGenNV.get(), genMode)
}

///|
let d_glPathGlyphIndexArrayNV : Dispatch = Dispatch::new(
  "glPathGlyphIndexArrayNV",
)

///|
#borrow(fontName)
extern "c" fn epoxy_glPathGlyphIndexArrayNV(
  fp : CPtr,
  firstPathName : UInt,
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  firstGlyphIndex : UInt,
  numGlyphs : Int,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> UInt = "epoxy_glPathGlyphIndexArrayNV"

///|
pub fn gl_path_glyph_index_array_nv(
  firstPathName : UInt,
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  firstGlyphIndex : UInt,
  numGlyphs : Int,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> UInt {
  epoxy_glPathGlyphIndexArrayNV(
    d_glPathGlyphIndexArrayNV.get(),
    firstPathName,
    fontTarget,
    fontName,
    fontStyle,
    firstGlyphIndex,
    numGlyphs,
    pathParameterTemplate,
    emScale,
  )
}

///|
let d_glPathGlyphIndexRangeNV : Dispatch = Dispatch::new(
  "glPathGlyphIndexRangeNV",
)

///|
#borrow(fontName, baseAndCount)
extern "c" fn epoxy_glPathGlyphIndexRangeNV(
  fp : CPtr,
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  pathParameterTemplate : UInt,
  emScale : Float,
  baseAndCount : FixedArray[UInt],
) -> UInt = "epoxy_glPathGlyphIndexRangeNV"

///|
pub fn gl_path_glyph_index_range_nv(
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  pathParameterTemplate : UInt,
  emScale : Float,
  baseAndCount : FixedArray[UInt],
) -> UInt {
  epoxy_glPathGlyphIndexRangeNV(
    d_glPathGlyphIndexRangeNV.get(),
    fontTarget,
    fontName,
    fontStyle,
    pathParameterTemplate,
    emScale,
    baseAndCount,
  )
}

///|
let d_glPathGlyphRangeNV : Dispatch = Dispatch::new("glPathGlyphRangeNV")

///|
#borrow(fontName)
extern "c" fn epoxy_glPathGlyphRangeNV(
  fp : CPtr,
  firstPathName : UInt,
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  firstGlyph : UInt,
  numGlyphs : Int,
  handleMissingGlyphs : UInt,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> Unit = "epoxy_glPathGlyphRangeNV"

///|
pub fn gl_path_glyph_range_nv(
  firstPathName : UInt,
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  firstGlyph : UInt,
  numGlyphs : Int,
  handleMissingGlyphs : UInt,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> Unit {
  epoxy_glPathGlyphRangeNV(
    d_glPathGlyphRangeNV.get(),
    firstPathName,
    fontTarget,
    fontName,
    fontStyle,
    firstGlyph,
    numGlyphs,
    handleMissingGlyphs,
    pathParameterTemplate,
    emScale,
  )
}

///|
let d_glPathGlyphsNV : Dispatch = Dispatch::new("glPathGlyphsNV")

///|
#borrow(fontName, charcodes)
extern "c" fn epoxy_glPathGlyphsNV(
  fp : CPtr,
  firstPathName : UInt,
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  numGlyphs : Int,
  type_ : UInt,
  charcodes : Bytes,
  handleMissingGlyphs : UInt,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> Unit = "epoxy_glPathGlyphsNV"

///|
pub fn gl_path_glyphs_nv(
  firstPathName : UInt,
  fontTarget : UInt,
  fontName : Bytes,
  fontStyle : UInt,
  numGlyphs : Int,
  type_ : UInt,
  charcodes : Bytes,
  handleMissingGlyphs : UInt,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> Unit {
  epoxy_glPathGlyphsNV(
    d_glPathGlyphsNV.get(),
    firstPathName,
    fontTarget,
    fontName,
    fontStyle,
    numGlyphs,
    type_,
    charcodes,
    handleMissingGlyphs,
    pathParameterTemplate,
    emScale,
  )
}

///|
let d_glPathMemoryGlyphIndexArrayNV : Dispatch = Dispatch::new(
  "glPathMemoryGlyphIndexArrayNV",
)

///|
#borrow(fontData)
extern "c" fn epoxy_glPathMemoryGlyphIndexArrayNV(
  fp : CPtr,
  firstPathName : UInt,
  fontTarget : UInt,
  fontSize : Int64,
  fontData : Bytes,
  faceIndex : Int,
  firstGlyphIndex : UInt,
  numGlyphs : Int,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> UInt = "epoxy_glPathMemoryGlyphIndexArrayNV"

///|
pub fn gl_path_memory_glyph_index_array_nv(
  firstPathName : UInt,
  fontTarget : UInt,
  fontSize : Int64,
  fontData : Bytes,
  faceIndex : Int,
  firstGlyphIndex : UInt,
  numGlyphs : Int,
  pathParameterTemplate : UInt,
  emScale : Float,
) -> UInt {
  epoxy_glPathMemoryGlyphIndexArrayNV(
    d_glPathMemoryGlyphIndexArrayNV.get(),
    firstPathName,
    fontTarget,
    fontSize,
    fontData,
    faceIndex,
    firstGlyphIndex,
    numGlyphs,
    pathParameterTemplate,
    emScale,
  )
}

///|
let d_glPathParameterfNV : Dispatch = Dispatch::new("glPathParameterfNV")

///|
extern "c" fn epoxy_glPathParameterfNV(
  fp : CPtr,
  path : UInt,
  pname : UInt,
  value : Float,
) -> Unit = "epoxy_glPathParameterfNV"

///|
pub fn gl_path_parameterf_nv(path : UInt, pname : UInt, value : Float) -> Unit {
  epoxy_glPathParameterfNV(d_glPathParameterfNV.get(), path, pname, value)
}

///|
let d_glPathParameterfvNV : Dispatch = Dispatch::new("glPathParameterfvNV")

///|
#borrow(value)
extern "c" fn epoxy_glPathParameterfvNV(
  fp : CPtr,
  path : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit = "epoxy_glPathParameterfvNV"

///|
pub fn gl_path_parameterfv_nv(
  path : UInt,
  pname : UInt,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glPathParameterfvNV(d_glPathParameterfvNV.get(), path, pname, value)
}

///|
let d_glPathParameteriNV : Dispatch = Dispatch::new("glPathParameteriNV")

///|
extern "c" fn epoxy_glPathParameteriNV(
  fp : CPtr,
  path : UInt,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glPathParameteriNV"

///|
pub fn gl_path_parameteri_nv(path : UInt, pname : UInt, value : Int) -> Unit {
  epoxy_glPathParameteriNV(d_glPathParameteriNV.get(), path, pname, value)
}

///|
let d_glPathParameterivNV : Dispatch = Dispatch::new("glPathParameterivNV")

///|
#borrow(value)
extern "c" fn epoxy_glPathParameterivNV(
  fp : CPtr,
  path : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit = "epoxy_glPathParameterivNV"

///|
pub fn gl_path_parameteriv_nv(
  path : UInt,
  pname : UInt,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glPathParameterivNV(d_glPathParameterivNV.get(), path, pname, value)
}

///|
let d_glPathStencilDepthOffsetNV : Dispatch = Dispatch::new(
  "glPathStencilDepthOffsetNV",
)

///|
extern "c" fn epoxy_glPathStencilDepthOffsetNV(
  fp : CPtr,
  factor : Float,
  units : Float,
) -> Unit = "epoxy_glPathStencilDepthOffsetNV"

///|
pub fn gl_path_stencil_depth_offset_nv(factor : Float, units : Float) -> Unit {
  epoxy_glPathStencilDepthOffsetNV(
    d_glPathStencilDepthOffsetNV.get(),
    factor,
    units,
  )
}

///|
let d_glPathStencilFuncNV : Dispatch = Dispatch::new("glPathStencilFuncNV")

///|
extern "c" fn epoxy_glPathStencilFuncNV(
  fp : CPtr,
  func : UInt,
  ref_ : Int,
  mask : UInt,
) -> Unit = "epoxy_glPathStencilFuncNV"

///|
pub fn gl_path_stencil_func_nv(func : UInt, ref_ : Int, mask : UInt) -> Unit {
  epoxy_glPathStencilFuncNV(d_glPathStencilFuncNV.get(), func, ref_, mask)
}

///|
let d_glPathStringNV : Dispatch = Dispatch::new("glPathStringNV")

///|
#borrow(pathString)
extern "c" fn epoxy_glPathStringNV(
  fp : CPtr,
  path : UInt,
  format : UInt,
  length : Int,
  pathString : Bytes,
) -> Unit = "epoxy_glPathStringNV"

///|
pub fn gl_path_string_nv(
  path : UInt,
  format : UInt,
  length : Int,
  pathString : Bytes,
) -> Unit {
  epoxy_glPathStringNV(d_glPathStringNV.get(), path, format, length, pathString)
}

///|
let d_glPathSubCommandsNV : Dispatch = Dispatch::new("glPathSubCommandsNV")

///|
#borrow(commands, coords)
extern "c" fn epoxy_glPathSubCommandsNV(
  fp : CPtr,
  path : UInt,
  commandStart : Int,
  commandsToDelete : Int,
  numCommands : Int,
  commands : Bytes,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glPathSubCommandsNV"

///|
pub fn gl_path_sub_commands_nv(
  path : UInt,
  commandStart : Int,
  commandsToDelete : Int,
  numCommands : Int,
  commands : Bytes,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit {
  epoxy_glPathSubCommandsNV(
    d_glPathSubCommandsNV.get(),
    path,
    commandStart,
    commandsToDelete,
    numCommands,
    commands,
    numCoords,
    coordType,
    coords,
  )
}

///|
let d_glPathSubCoordsNV : Dispatch = Dispatch::new("glPathSubCoordsNV")

///|
#borrow(coords)
extern "c" fn epoxy_glPathSubCoordsNV(
  fp : CPtr,
  path : UInt,
  coordStart : Int,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit = "epoxy_glPathSubCoordsNV"

///|
pub fn gl_path_sub_coords_nv(
  path : UInt,
  coordStart : Int,
  numCoords : Int,
  coordType : UInt,
  coords : Bytes,
) -> Unit {
  epoxy_glPathSubCoordsNV(
    d_glPathSubCoordsNV.get(),
    path,
    coordStart,
    numCoords,
    coordType,
    coords,
  )
}

///|
let d_glPathTexGenNV : Dispatch = Dispatch::new("glPathTexGenNV")

///|
#borrow(coeffs)
extern "c" fn epoxy_glPathTexGenNV(
  fp : CPtr,
  texCoordSet : UInt,
  genMode : UInt,
  components : Int,
  coeffs : FixedArray[Float],
) -> Unit = "epoxy_glPathTexGenNV"

///|
pub fn gl_path_tex_gen_nv(
  texCoordSet : UInt,
  genMode : UInt,
  components : Int,
  coeffs : FixedArray[Float],
) -> Unit {
  epoxy_glPathTexGenNV(
    d_glPathTexGenNV.get(),
    texCoordSet,
    genMode,
    components,
    coeffs,
  )
}

///|
let d_glPauseTransformFeedback : Dispatch = Dispatch::with_aliases(
  "glPauseTransformFeedback",
  ["glPauseTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glPauseTransformFeedback(fp : CPtr) -> Unit = "epoxy_glPauseTransformFeedback"

///|
pub fn gl_pause_transform_feedback() -> Unit {
  epoxy_glPauseTransformFeedback(d_glPauseTransformFeedback.get())
}

///|
let d_glPauseTransformFeedbackNV : Dispatch = Dispatch::with_aliases(
  "glPauseTransformFeedbackNV",
  ["glPauseTransformFeedback"],
)

///|
extern "c" fn epoxy_glPauseTransformFeedbackNV(fp : CPtr) -> Unit = "epoxy_glPauseTransformFeedbackNV"

///|
pub fn gl_pause_transform_feedback_nv() -> Unit {
  epoxy_glPauseTransformFeedbackNV(d_glPauseTransformFeedbackNV.get())
}

///|
let d_glPixelDataRangeNV : Dispatch = Dispatch::new("glPixelDataRangeNV")

///|
#borrow(pointer)
extern "c" fn epoxy_glPixelDataRangeNV(
  fp : CPtr,
  target : UInt,
  length : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glPixelDataRangeNV"

///|
pub fn gl_pixel_data_range_nv(
  target : UInt,
  length : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glPixelDataRangeNV(d_glPixelDataRangeNV.get(), target, length, pointer)
}

///|
let d_glPixelMapfv : Dispatch = Dispatch::new("glPixelMapfv")

///|
#borrow(values)
extern "c" fn epoxy_glPixelMapfv(
  fp : CPtr,
  map : UInt,
  mapsize : Int,
  values : FixedArray[Float],
) -> Unit = "epoxy_glPixelMapfv"

///|
pub fn gl_pixel_mapfv(
  map : UInt,
  mapsize : Int,
  values : FixedArray[Float],
) -> Unit {
  epoxy_glPixelMapfv(d_glPixelMapfv.get(), map, mapsize, values)
}

///|
let d_glPixelMapuiv : Dispatch = Dispatch::new("glPixelMapuiv")

///|
#borrow(values)
extern "c" fn epoxy_glPixelMapuiv(
  fp : CPtr,
  map : UInt,
  mapsize : Int,
  values : FixedArray[UInt],
) -> Unit = "epoxy_glPixelMapuiv"

///|
pub fn gl_pixel_mapuiv(
  map : UInt,
  mapsize : Int,
  values : FixedArray[UInt],
) -> Unit {
  epoxy_glPixelMapuiv(d_glPixelMapuiv.get(), map, mapsize, values)
}

///|
let d_glPixelMapusv : Dispatch = Dispatch::new("glPixelMapusv")

///|
#borrow(values)
extern "c" fn epoxy_glPixelMapusv(
  fp : CPtr,
  map : UInt,
  mapsize : Int,
  values : FixedArray[UInt16],
) -> Unit = "epoxy_glPixelMapusv"

///|
pub fn gl_pixel_mapusv(
  map : UInt,
  mapsize : Int,
  values : FixedArray[UInt16],
) -> Unit {
  epoxy_glPixelMapusv(d_glPixelMapusv.get(), map, mapsize, values)
}

///|
let d_glPixelMapx : Dispatch = Dispatch::new("glPixelMapx")

///|
#borrow(values)
extern "c" fn epoxy_glPixelMapx(
  fp : CPtr,
  map : UInt,
  size : Int,
  values : FixedArray[Int],
) -> Unit = "epoxy_glPixelMapx"

///|
pub fn gl_pixel_mapx(map : UInt, size : Int, values : FixedArray[Int]) -> Unit {
  epoxy_glPixelMapx(d_glPixelMapx.get(), map, size, values)
}

///|
let d_glPixelStoref : Dispatch = Dispatch::new("glPixelStoref")

///|
extern "c" fn epoxy_glPixelStoref(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPixelStoref"

///|
pub fn gl_pixel_storef(pname : UInt, param : Float) -> Unit {
  epoxy_glPixelStoref(d_glPixelStoref.get(), pname, param)
}

///|
let d_glPixelStorei : Dispatch = Dispatch::new("glPixelStorei")

///|
extern "c" fn epoxy_glPixelStorei(fp : CPtr, pname : UInt, param : Int) -> Unit = "epoxy_glPixelStorei"

///|
pub fn gl_pixel_storei(pname : UInt, param : Int) -> Unit {
  epoxy_glPixelStorei(d_glPixelStorei.get(), pname, param)
}

///|
let d_glPixelStorex : Dispatch = Dispatch::new("glPixelStorex")

///|
extern "c" fn epoxy_glPixelStorex(fp : CPtr, pname : UInt, param : Int) -> Unit = "epoxy_glPixelStorex"

///|
pub fn gl_pixel_storex(pname : UInt, param : Int) -> Unit {
  epoxy_glPixelStorex(d_glPixelStorex.get(), pname, param)
}

///|
let d_glPixelTexGenParameterfSGIS : Dispatch = Dispatch::new(
  "glPixelTexGenParameterfSGIS",
)

///|
extern "c" fn epoxy_glPixelTexGenParameterfSGIS(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPixelTexGenParameterfSGIS"

///|
pub fn gl_pixel_tex_gen_parameterf_sgis(pname : UInt, param : Float) -> Unit {
  epoxy_glPixelTexGenParameterfSGIS(
    d_glPixelTexGenParameterfSGIS.get(),
    pname,
    param,
  )
}

///|
let d_glPixelTexGenParameterfvSGIS : Dispatch = Dispatch::new(
  "glPixelTexGenParameterfvSGIS",
)

///|
#borrow(params)
extern "c" fn epoxy_glPixelTexGenParameterfvSGIS(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glPixelTexGenParameterfvSGIS"

///|
pub fn gl_pixel_tex_gen_parameterfv_sgis(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glPixelTexGenParameterfvSGIS(
    d_glPixelTexGenParameterfvSGIS.get(),
    pname,
    params,
  )
}

///|
let d_glPixelTexGenParameteriSGIS : Dispatch = Dispatch::new(
  "glPixelTexGenParameteriSGIS",
)

///|
extern "c" fn epoxy_glPixelTexGenParameteriSGIS(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPixelTexGenParameteriSGIS"

///|
pub fn gl_pixel_tex_gen_parameteri_sgis(pname : UInt, param : Int) -> Unit {
  epoxy_glPixelTexGenParameteriSGIS(
    d_glPixelTexGenParameteriSGIS.get(),
    pname,
    param,
  )
}

///|
let d_glPixelTexGenParameterivSGIS : Dispatch = Dispatch::new(
  "glPixelTexGenParameterivSGIS",
)

///|
#borrow(params)
extern "c" fn epoxy_glPixelTexGenParameterivSGIS(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glPixelTexGenParameterivSGIS"

///|
pub fn gl_pixel_tex_gen_parameteriv_sgis(
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glPixelTexGenParameterivSGIS(
    d_glPixelTexGenParameterivSGIS.get(),
    pname,
    params,
  )
}

///|
let d_glPixelTexGenSGIX : Dispatch = Dispatch::new("glPixelTexGenSGIX")

///|
extern "c" fn epoxy_glPixelTexGenSGIX(fp : CPtr, mode : UInt) -> Unit = "epoxy_glPixelTexGenSGIX"

///|
pub fn gl_pixel_tex_gen_sgix(mode : UInt) -> Unit {
  epoxy_glPixelTexGenSGIX(d_glPixelTexGenSGIX.get(), mode)
}

///|
let d_glPixelTransferf : Dispatch = Dispatch::new("glPixelTransferf")

///|
extern "c" fn epoxy_glPixelTransferf(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPixelTransferf"

///|
pub fn gl_pixel_transferf(pname : UInt, param : Float) -> Unit {
  epoxy_glPixelTransferf(d_glPixelTransferf.get(), pname, param)
}

///|
let d_glPixelTransferi : Dispatch = Dispatch::new("glPixelTransferi")

///|
extern "c" fn epoxy_glPixelTransferi(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPixelTransferi"

///|
pub fn gl_pixel_transferi(pname : UInt, param : Int) -> Unit {
  epoxy_glPixelTransferi(d_glPixelTransferi.get(), pname, param)
}

///|
let d_glPixelTransferxOES : Dispatch = Dispatch::new("glPixelTransferxOES")

///|
extern "c" fn epoxy_glPixelTransferxOES(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPixelTransferxOES"

///|
pub fn gl_pixel_transferx_oes(pname : UInt, param : Int) -> Unit {
  epoxy_glPixelTransferxOES(d_glPixelTransferxOES.get(), pname, param)
}

///|
let d_glPixelTransformParameterfEXT : Dispatch = Dispatch::new(
  "glPixelTransformParameterfEXT",
)

///|
extern "c" fn epoxy_glPixelTransformParameterfEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPixelTransformParameterfEXT"

///|
pub fn gl_pixel_transform_parameterf_ext(
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glPixelTransformParameterfEXT(
    d_glPixelTransformParameterfEXT.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glPixelTransformParameterfvEXT : Dispatch = Dispatch::new(
  "glPixelTransformParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glPixelTransformParameterfvEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glPixelTransformParameterfvEXT"

///|
pub fn gl_pixel_transform_parameterfv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glPixelTransformParameterfvEXT(
    d_glPixelTransformParameterfvEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glPixelTransformParameteriEXT : Dispatch = Dispatch::new(
  "glPixelTransformParameteriEXT",
)

///|
extern "c" fn epoxy_glPixelTransformParameteriEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPixelTransformParameteriEXT"

///|
pub fn gl_pixel_transform_parameteri_ext(
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glPixelTransformParameteriEXT(
    d_glPixelTransformParameteriEXT.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glPixelTransformParameterivEXT : Dispatch = Dispatch::new(
  "glPixelTransformParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glPixelTransformParameterivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glPixelTransformParameterivEXT"

///|
pub fn gl_pixel_transform_parameteriv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glPixelTransformParameterivEXT(
    d_glPixelTransformParameterivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glPixelZoom : Dispatch = Dispatch::new("glPixelZoom")

///|
extern "c" fn epoxy_glPixelZoom(
  fp : CPtr,
  xfactor : Float,
  yfactor : Float,
) -> Unit = "epoxy_glPixelZoom"

///|
pub fn gl_pixel_zoom(xfactor : Float, yfactor : Float) -> Unit {
  epoxy_glPixelZoom(d_glPixelZoom.get(), xfactor, yfactor)
}

///|
let d_glPixelZoomxOES : Dispatch = Dispatch::new("glPixelZoomxOES")

///|
extern "c" fn epoxy_glPixelZoomxOES(
  fp : CPtr,
  xfactor : Int,
  yfactor : Int,
) -> Unit = "epoxy_glPixelZoomxOES"

///|
pub fn gl_pixel_zoomx_oes(xfactor : Int, yfactor : Int) -> Unit {
  epoxy_glPixelZoomxOES(d_glPixelZoomxOES.get(), xfactor, yfactor)
}

///|
let d_glPointAlongPathNV : Dispatch = Dispatch::new("glPointAlongPathNV")

///|
#borrow(x, y, tangentX, tangentY)
extern "c" fn epoxy_glPointAlongPathNV(
  fp : CPtr,
  path : UInt,
  startSegment : Int,
  numSegments : Int,
  distance : Float,
  x : FixedArray[Float],
  y : FixedArray[Float],
  tangentX : FixedArray[Float],
  tangentY : FixedArray[Float],
) -> Bool = "epoxy_glPointAlongPathNV"

///|
pub fn gl_point_along_path_nv(
  path : UInt,
  startSegment : Int,
  numSegments : Int,
  distance : Float,
  x : FixedArray[Float],
  y : FixedArray[Float],
  tangentX : FixedArray[Float],
  tangentY : FixedArray[Float],
) -> Bool {
  epoxy_glPointAlongPathNV(
    d_glPointAlongPathNV.get(),
    path,
    startSegment,
    numSegments,
    distance,
    x,
    y,
    tangentX,
    tangentY,
  )
}

///|
let d_glPointParameterf : Dispatch = Dispatch::with_aliases(
  "glPointParameterf",
  ["glPointParameterfARB", "glPointParameterfEXT", "glPointParameterfSGIS"],
)

///|
extern "c" fn epoxy_glPointParameterf(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPointParameterf"

///|
pub fn gl_point_parameterf(pname : UInt, param : Float) -> Unit {
  epoxy_glPointParameterf(d_glPointParameterf.get(), pname, param)
}

///|
let d_glPointParameterfARB : Dispatch = Dispatch::with_aliases(
  "glPointParameterfARB",
  ["glPointParameterf", "glPointParameterfEXT", "glPointParameterfSGIS"],
)

///|
extern "c" fn epoxy_glPointParameterfARB(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPointParameterfARB"

///|
pub fn gl_point_parameterf_arb(pname : UInt, param : Float) -> Unit {
  epoxy_glPointParameterfARB(d_glPointParameterfARB.get(), pname, param)
}

///|
let d_glPointParameterfEXT : Dispatch = Dispatch::with_aliases(
  "glPointParameterfEXT",
  ["glPointParameterf", "glPointParameterfARB", "glPointParameterfSGIS"],
)

///|
extern "c" fn epoxy_glPointParameterfEXT(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPointParameterfEXT"

///|
pub fn gl_point_parameterf_ext(pname : UInt, param : Float) -> Unit {
  epoxy_glPointParameterfEXT(d_glPointParameterfEXT.get(), pname, param)
}

///|
let d_glPointParameterfSGIS : Dispatch = Dispatch::with_aliases(
  "glPointParameterfSGIS",
  ["glPointParameterf", "glPointParameterfARB", "glPointParameterfEXT"],
)

///|
extern "c" fn epoxy_glPointParameterfSGIS(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glPointParameterfSGIS"

///|
pub fn gl_point_parameterf_sgis(pname : UInt, param : Float) -> Unit {
  epoxy_glPointParameterfSGIS(d_glPointParameterfSGIS.get(), pname, param)
}

///|
let d_glPointParameterfv : Dispatch = Dispatch::with_aliases(
  "glPointParameterfv",
  ["glPointParameterfvARB", "glPointParameterfvEXT", "glPointParameterfvSGIS"],
)

///|
#borrow(params)
extern "c" fn epoxy_glPointParameterfv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glPointParameterfv"

///|
pub fn gl_point_parameterfv(pname : UInt, params : FixedArray[Float]) -> Unit {
  epoxy_glPointParameterfv(d_glPointParameterfv.get(), pname, params)
}

///|
let d_glPointParameterfvARB : Dispatch = Dispatch::with_aliases(
  "glPointParameterfvARB",
  ["glPointParameterfv", "glPointParameterfvEXT", "glPointParameterfvSGIS"],
)

///|
#borrow(params)
extern "c" fn epoxy_glPointParameterfvARB(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glPointParameterfvARB"

///|
pub fn gl_point_parameterfv_arb(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glPointParameterfvARB(d_glPointParameterfvARB.get(), pname, params)
}

///|
let d_glPointParameterfvEXT : Dispatch = Dispatch::with_aliases(
  "glPointParameterfvEXT",
  ["glPointParameterfv", "glPointParameterfvARB", "glPointParameterfvSGIS"],
)

///|
#borrow(params)
extern "c" fn epoxy_glPointParameterfvEXT(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glPointParameterfvEXT"

///|
pub fn gl_point_parameterfv_ext(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glPointParameterfvEXT(d_glPointParameterfvEXT.get(), pname, params)
}

///|
let d_glPointParameterfvSGIS : Dispatch = Dispatch::with_aliases(
  "glPointParameterfvSGIS",
  ["glPointParameterfv", "glPointParameterfvARB", "glPointParameterfvEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glPointParameterfvSGIS(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glPointParameterfvSGIS"

///|
pub fn gl_point_parameterfv_sgis(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glPointParameterfvSGIS(d_glPointParameterfvSGIS.get(), pname, params)
}

///|
let d_glPointParameteri : Dispatch = Dispatch::with_aliases(
  "glPointParameteri",
  ["glPointParameteriNV"],
)

///|
extern "c" fn epoxy_glPointParameteri(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPointParameteri"

///|
pub fn gl_point_parameteri(pname : UInt, param : Int) -> Unit {
  epoxy_glPointParameteri(d_glPointParameteri.get(), pname, param)
}

///|
let d_glPointParameteriNV : Dispatch = Dispatch::with_aliases(
  "glPointParameteriNV",
  ["glPointParameteri"],
)

///|
extern "c" fn epoxy_glPointParameteriNV(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPointParameteriNV"

///|
pub fn gl_point_parameteri_nv(pname : UInt, param : Int) -> Unit {
  epoxy_glPointParameteriNV(d_glPointParameteriNV.get(), pname, param)
}

///|
let d_glPointParameteriv : Dispatch = Dispatch::with_aliases(
  "glPointParameteriv",
  ["glPointParameterivNV"],
)

///|
#borrow(params)
extern "c" fn epoxy_glPointParameteriv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glPointParameteriv"

///|
pub fn gl_point_parameteriv(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glPointParameteriv(d_glPointParameteriv.get(), pname, params)
}

///|
let d_glPointParameterivNV : Dispatch = Dispatch::with_aliases(
  "glPointParameterivNV",
  ["glPointParameteriv"],
)

///|
#borrow(params)
extern "c" fn epoxy_glPointParameterivNV(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glPointParameterivNV"

///|
pub fn gl_point_parameteriv_nv(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glPointParameterivNV(d_glPointParameterivNV.get(), pname, params)
}

///|
let d_glPointParameterx : Dispatch = Dispatch::new("glPointParameterx")

///|
extern "c" fn epoxy_glPointParameterx(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPointParameterx"

///|
pub fn gl_point_parameterx(pname : UInt, param : Int) -> Unit {
  epoxy_glPointParameterx(d_glPointParameterx.get(), pname, param)
}

///|
let d_glPointParameterxOES : Dispatch = Dispatch::new("glPointParameterxOES")

///|
extern "c" fn epoxy_glPointParameterxOES(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glPointParameterxOES"

///|
pub fn gl_point_parameterx_oes(pname : UInt, param : Int) -> Unit {
  epoxy_glPointParameterxOES(d_glPointParameterxOES.get(), pname, param)
}

///|
let d_glPointParameterxv : Dispatch = Dispatch::new("glPointParameterxv")

///|
#borrow(params)
extern "c" fn epoxy_glPointParameterxv(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glPointParameterxv"

///|
pub fn gl_point_parameterxv(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glPointParameterxv(d_glPointParameterxv.get(), pname, params)
}

///|
let d_glPointParameterxvOES : Dispatch = Dispatch::new("glPointParameterxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glPointParameterxvOES(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glPointParameterxvOES"

///|
pub fn gl_point_parameterxv_oes(pname : UInt, params : FixedArray[Int]) -> Unit {
  epoxy_glPointParameterxvOES(d_glPointParameterxvOES.get(), pname, params)
}

///|
let d_glPointSize : Dispatch = Dispatch::new("glPointSize")

///|
extern "c" fn epoxy_glPointSize(fp : CPtr, size : Float) -> Unit = "epoxy_glPointSize"

///|
pub fn gl_point_size(size : Float) -> Unit {
  epoxy_glPointSize(d_glPointSize.get(), size)
}

///|
let d_glPointSizePointerOES : Dispatch = Dispatch::new("glPointSizePointerOES")

///|
#borrow(pointer)
extern "c" fn epoxy_glPointSizePointerOES(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glPointSizePointerOES"

///|
pub fn gl_point_size_pointer_oes(
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glPointSizePointerOES(
    d_glPointSizePointerOES.get(),
    type_,
    stride,
    pointer,
  )
}

///|
let d_glPointSizex : Dispatch = Dispatch::new("glPointSizex")

///|
extern "c" fn epoxy_glPointSizex(fp : CPtr, size : Int) -> Unit = "epoxy_glPointSizex"

///|
pub fn gl_point_sizex(size : Int) -> Unit {
  epoxy_glPointSizex(d_glPointSizex.get(), size)
}

///|
let d_glPointSizexOES : Dispatch = Dispatch::new("glPointSizexOES")

///|
extern "c" fn epoxy_glPointSizexOES(fp : CPtr, size : Int) -> Unit = "epoxy_glPointSizexOES"

///|
pub fn gl_point_sizex_oes(size : Int) -> Unit {
  epoxy_glPointSizexOES(d_glPointSizexOES.get(), size)
}

///|
let d_glPollAsyncSGIX : Dispatch = Dispatch::new("glPollAsyncSGIX")

///|
#borrow(markerp)
extern "c" fn epoxy_glPollAsyncSGIX(
  fp : CPtr,
  markerp : FixedArray[UInt],
) -> Int = "epoxy_glPollAsyncSGIX"

///|
pub fn gl_poll_async_sgix(markerp : FixedArray[UInt]) -> Int {
  epoxy_glPollAsyncSGIX(d_glPollAsyncSGIX.get(), markerp)
}

///|
let d_glPollInstrumentsSGIX : Dispatch = Dispatch::new("glPollInstrumentsSGIX")

///|
#borrow(marker_p)
extern "c" fn epoxy_glPollInstrumentsSGIX(
  fp : CPtr,
  marker_p : FixedArray[Int],
) -> Int = "epoxy_glPollInstrumentsSGIX"

///|
pub fn gl_poll_instruments_sgix(marker_p : FixedArray[Int]) -> Int {
  epoxy_glPollInstrumentsSGIX(d_glPollInstrumentsSGIX.get(), marker_p)
}

///|
let d_glPolygonMode : Dispatch = Dispatch::with_aliases("glPolygonMode", [
  "glPolygonModeNV",
])

///|
extern "c" fn epoxy_glPolygonMode(fp : CPtr, face : UInt, mode : UInt) -> Unit = "epoxy_glPolygonMode"

///|
pub fn gl_polygon_mode(face : UInt, mode : UInt) -> Unit {
  epoxy_glPolygonMode(d_glPolygonMode.get(), face, mode)
}

///|
let d_glPolygonModeNV : Dispatch = Dispatch::with_aliases("glPolygonModeNV", [
  "glPolygonMode",
])

///|
extern "c" fn epoxy_glPolygonModeNV(
  fp : CPtr,
  face : UInt,
  mode : UInt,
) -> Unit = "epoxy_glPolygonModeNV"

///|
pub fn gl_polygon_mode_nv(face : UInt, mode : UInt) -> Unit {
  epoxy_glPolygonModeNV(d_glPolygonModeNV.get(), face, mode)
}

///|
let d_glPolygonOffset : Dispatch = Dispatch::new("glPolygonOffset")

///|
extern "c" fn epoxy_glPolygonOffset(
  fp : CPtr,
  factor : Float,
  units : Float,
) -> Unit = "epoxy_glPolygonOffset"

///|
pub fn gl_polygon_offset(factor : Float, units : Float) -> Unit {
  epoxy_glPolygonOffset(d_glPolygonOffset.get(), factor, units)
}

///|
let d_glPolygonOffsetClamp : Dispatch = Dispatch::with_aliases(
  "glPolygonOffsetClamp",
  ["glPolygonOffsetClampEXT"],
)

///|
extern "c" fn epoxy_glPolygonOffsetClamp(
  fp : CPtr,
  factor : Float,
  units : Float,
  clamp : Float,
) -> Unit = "epoxy_glPolygonOffsetClamp"

///|
pub fn gl_polygon_offset_clamp(
  factor : Float,
  units : Float,
  clamp : Float,
) -> Unit {
  epoxy_glPolygonOffsetClamp(d_glPolygonOffsetClamp.get(), factor, units, clamp)
}

///|
let d_glPolygonOffsetClampEXT : Dispatch = Dispatch::with_aliases(
  "glPolygonOffsetClampEXT",
  ["glPolygonOffsetClamp"],
)

///|
extern "c" fn epoxy_glPolygonOffsetClampEXT(
  fp : CPtr,
  factor : Float,
  units : Float,
  clamp : Float,
) -> Unit = "epoxy_glPolygonOffsetClampEXT"

///|
pub fn gl_polygon_offset_clamp_ext(
  factor : Float,
  units : Float,
  clamp : Float,
) -> Unit {
  epoxy_glPolygonOffsetClampEXT(
    d_glPolygonOffsetClampEXT.get(),
    factor,
    units,
    clamp,
  )
}

///|
let d_glPolygonOffsetEXT : Dispatch = Dispatch::new("glPolygonOffsetEXT")

///|
extern "c" fn epoxy_glPolygonOffsetEXT(
  fp : CPtr,
  factor : Float,
  bias : Float,
) -> Unit = "epoxy_glPolygonOffsetEXT"

///|
pub fn gl_polygon_offset_ext(factor : Float, bias : Float) -> Unit {
  epoxy_glPolygonOffsetEXT(d_glPolygonOffsetEXT.get(), factor, bias)
}

///|
let d_glPolygonOffsetx : Dispatch = Dispatch::new("glPolygonOffsetx")

///|
extern "c" fn epoxy_glPolygonOffsetx(
  fp : CPtr,
  factor : Int,
  units : Int,
) -> Unit = "epoxy_glPolygonOffsetx"

///|
pub fn gl_polygon_offsetx(factor : Int, units : Int) -> Unit {
  epoxy_glPolygonOffsetx(d_glPolygonOffsetx.get(), factor, units)
}

///|
let d_glPolygonOffsetxOES : Dispatch = Dispatch::new("glPolygonOffsetxOES")

///|
extern "c" fn epoxy_glPolygonOffsetxOES(
  fp : CPtr,
  factor : Int,
  units : Int,
) -> Unit = "epoxy_glPolygonOffsetxOES"

///|
pub fn gl_polygon_offsetx_oes(factor : Int, units : Int) -> Unit {
  epoxy_glPolygonOffsetxOES(d_glPolygonOffsetxOES.get(), factor, units)
}

///|
let d_glPolygonStipple : Dispatch = Dispatch::new("glPolygonStipple")

///|
#borrow(mask)
extern "c" fn epoxy_glPolygonStipple(fp : CPtr, mask : Bytes) -> Unit = "epoxy_glPolygonStipple"

///|
pub fn gl_polygon_stipple(mask : Bytes) -> Unit {
  epoxy_glPolygonStipple(d_glPolygonStipple.get(), mask)
}

///|
let d_glPopAttrib : Dispatch = Dispatch::new("glPopAttrib")

///|
extern "c" fn epoxy_glPopAttrib(fp : CPtr) -> Unit = "epoxy_glPopAttrib"

///|
pub fn gl_pop_attrib() -> Unit {
  epoxy_glPopAttrib(d_glPopAttrib.get())
}

///|
let d_glPopClientAttrib : Dispatch = Dispatch::new("glPopClientAttrib")

///|
extern "c" fn epoxy_glPopClientAttrib(fp : CPtr) -> Unit = "epoxy_glPopClientAttrib"

///|
pub fn gl_pop_client_attrib() -> Unit {
  epoxy_glPopClientAttrib(d_glPopClientAttrib.get())
}

///|
let d_glPopDebugGroup : Dispatch = Dispatch::with_aliases("glPopDebugGroup", [
  "glPopDebugGroupKHR",
])

///|
extern "c" fn epoxy_glPopDebugGroup(fp : CPtr) -> Unit = "epoxy_glPopDebugGroup"

///|
pub fn gl_pop_debug_group() -> Unit {
  epoxy_glPopDebugGroup(d_glPopDebugGroup.get())
}

///|
let d_glPopDebugGroupKHR : Dispatch = Dispatch::with_aliases(
  "glPopDebugGroupKHR",
  ["glPopDebugGroup"],
)

///|
extern "c" fn epoxy_glPopDebugGroupKHR(fp : CPtr) -> Unit = "epoxy_glPopDebugGroupKHR"

///|
pub fn gl_pop_debug_group_khr() -> Unit {
  epoxy_glPopDebugGroupKHR(d_glPopDebugGroupKHR.get())
}

///|
let d_glPopGroupMarkerEXT : Dispatch = Dispatch::new("glPopGroupMarkerEXT")

///|
extern "c" fn epoxy_glPopGroupMarkerEXT(fp : CPtr) -> Unit = "epoxy_glPopGroupMarkerEXT"

///|
pub fn gl_pop_group_marker_ext() -> Unit {
  epoxy_glPopGroupMarkerEXT(d_glPopGroupMarkerEXT.get())
}

///|
let d_glPopMatrix : Dispatch = Dispatch::new("glPopMatrix")

///|
extern "c" fn epoxy_glPopMatrix(fp : CPtr) -> Unit = "epoxy_glPopMatrix"

///|
pub fn gl_pop_matrix() -> Unit {
  epoxy_glPopMatrix(d_glPopMatrix.get())
}

///|
let d_glPopName : Dispatch = Dispatch::new("glPopName")

///|
extern "c" fn epoxy_glPopName(fp : CPtr) -> Unit = "epoxy_glPopName"

///|
pub fn gl_pop_name() -> Unit {
  epoxy_glPopName(d_glPopName.get())
}

///|
let d_glPresentFrameDualFillNV : Dispatch = Dispatch::new(
  "glPresentFrameDualFillNV",
)

///|
extern "c" fn epoxy_glPresentFrameDualFillNV(
  fp : CPtr,
  video_slot : UInt,
  minPresentTime : UInt64,
  beginPresentTimeId : UInt,
  presentDurationId : UInt,
  type_ : UInt,
  target0 : UInt,
  fill0 : UInt,
  target1 : UInt,
  fill1 : UInt,
  target2 : UInt,
  fill2 : UInt,
  target3 : UInt,
  fill3 : UInt,
) -> Unit = "epoxy_glPresentFrameDualFillNV"

///|
pub fn gl_present_frame_dual_fill_nv(
  video_slot : UInt,
  minPresentTime : UInt64,
  beginPresentTimeId : UInt,
  presentDurationId : UInt,
  type_ : UInt,
  target0 : UInt,
  fill0 : UInt,
  target1 : UInt,
  fill1 : UInt,
  target2 : UInt,
  fill2 : UInt,
  target3 : UInt,
  fill3 : UInt,
) -> Unit {
  epoxy_glPresentFrameDualFillNV(
    d_glPresentFrameDualFillNV.get(),
    video_slot,
    minPresentTime,
    beginPresentTimeId,
    presentDurationId,
    type_,
    target0,
    fill0,
    target1,
    fill1,
    target2,
    fill2,
    target3,
    fill3,
  )
}

///|
let d_glPresentFrameKeyedNV : Dispatch = Dispatch::new("glPresentFrameKeyedNV")

///|
extern "c" fn epoxy_glPresentFrameKeyedNV(
  fp : CPtr,
  video_slot : UInt,
  minPresentTime : UInt64,
  beginPresentTimeId : UInt,
  presentDurationId : UInt,
  type_ : UInt,
  target0 : UInt,
  fill0 : UInt,
  key0 : UInt,
  target1 : UInt,
  fill1 : UInt,
  key1 : UInt,
) -> Unit = "epoxy_glPresentFrameKeyedNV"

///|
pub fn gl_present_frame_keyed_nv(
  video_slot : UInt,
  minPresentTime : UInt64,
  beginPresentTimeId : UInt,
  presentDurationId : UInt,
  type_ : UInt,
  target0 : UInt,
  fill0 : UInt,
  key0 : UInt,
  target1 : UInt,
  fill1 : UInt,
  key1 : UInt,
) -> Unit {
  epoxy_glPresentFrameKeyedNV(
    d_glPresentFrameKeyedNV.get(),
    video_slot,
    minPresentTime,
    beginPresentTimeId,
    presentDurationId,
    type_,
    target0,
    fill0,
    key0,
    target1,
    fill1,
    key1,
  )
}

///|
let d_glPrimitiveBoundingBox : Dispatch = Dispatch::with_aliases(
  "glPrimitiveBoundingBox",
  [
    "glPrimitiveBoundingBoxARB", "glPrimitiveBoundingBoxEXT", "glPrimitiveBoundingBoxOES",
  ],
)

///|
extern "c" fn epoxy_glPrimitiveBoundingBox(
  fp : CPtr,
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit = "epoxy_glPrimitiveBoundingBox"

///|
pub fn gl_primitive_bounding_box(
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit {
  epoxy_glPrimitiveBoundingBox(
    d_glPrimitiveBoundingBox.get(),
    minX,
    minY,
    minZ,
    minW,
    maxX,
    maxY,
    maxZ,
    maxW,
  )
}

///|
let d_glPrimitiveBoundingBoxARB : Dispatch = Dispatch::with_aliases(
  "glPrimitiveBoundingBoxARB",
  [
    "glPrimitiveBoundingBox", "glPrimitiveBoundingBoxEXT", "glPrimitiveBoundingBoxOES",
  ],
)

///|
extern "c" fn epoxy_glPrimitiveBoundingBoxARB(
  fp : CPtr,
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit = "epoxy_glPrimitiveBoundingBoxARB"

///|
pub fn gl_primitive_bounding_box_arb(
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit {
  epoxy_glPrimitiveBoundingBoxARB(
    d_glPrimitiveBoundingBoxARB.get(),
    minX,
    minY,
    minZ,
    minW,
    maxX,
    maxY,
    maxZ,
    maxW,
  )
}

///|
let d_glPrimitiveBoundingBoxEXT : Dispatch = Dispatch::with_aliases(
  "glPrimitiveBoundingBoxEXT",
  [
    "glPrimitiveBoundingBox", "glPrimitiveBoundingBoxARB", "glPrimitiveBoundingBoxOES",
  ],
)

///|
extern "c" fn epoxy_glPrimitiveBoundingBoxEXT(
  fp : CPtr,
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit = "epoxy_glPrimitiveBoundingBoxEXT"

///|
pub fn gl_primitive_bounding_box_ext(
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit {
  epoxy_glPrimitiveBoundingBoxEXT(
    d_glPrimitiveBoundingBoxEXT.get(),
    minX,
    minY,
    minZ,
    minW,
    maxX,
    maxY,
    maxZ,
    maxW,
  )
}

///|
let d_glPrimitiveBoundingBoxOES : Dispatch = Dispatch::with_aliases(
  "glPrimitiveBoundingBoxOES",
  [
    "glPrimitiveBoundingBox", "glPrimitiveBoundingBoxARB", "glPrimitiveBoundingBoxEXT",
  ],
)

///|
extern "c" fn epoxy_glPrimitiveBoundingBoxOES(
  fp : CPtr,
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit = "epoxy_glPrimitiveBoundingBoxOES"

///|
pub fn gl_primitive_bounding_box_oes(
  minX : Float,
  minY : Float,
  minZ : Float,
  minW : Float,
  maxX : Float,
  maxY : Float,
  maxZ : Float,
  maxW : Float,
) -> Unit {
  epoxy_glPrimitiveBoundingBoxOES(
    d_glPrimitiveBoundingBoxOES.get(),
    minX,
    minY,
    minZ,
    minW,
    maxX,
    maxY,
    maxZ,
    maxW,
  )
}

///|
let d_glPrimitiveRestartIndex : Dispatch = Dispatch::new(
  "glPrimitiveRestartIndex",
)

///|
extern "c" fn epoxy_glPrimitiveRestartIndex(fp : CPtr, index : UInt) -> Unit = "epoxy_glPrimitiveRestartIndex"

///|
pub fn gl_primitive_restart_index(index : UInt) -> Unit {
  epoxy_glPrimitiveRestartIndex(d_glPrimitiveRestartIndex.get(), index)
}

///|
let d_glPrimitiveRestartIndexNV : Dispatch = Dispatch::new(
  "glPrimitiveRestartIndexNV",
)

///|
extern "c" fn epoxy_glPrimitiveRestartIndexNV(fp : CPtr, index : UInt) -> Unit = "epoxy_glPrimitiveRestartIndexNV"

///|
pub fn gl_primitive_restart_index_nv(index : UInt) -> Unit {
  epoxy_glPrimitiveRestartIndexNV(d_glPrimitiveRestartIndexNV.get(), index)
}

///|
let d_glPrimitiveRestartNV : Dispatch = Dispatch::new("glPrimitiveRestartNV")

///|
extern "c" fn epoxy_glPrimitiveRestartNV(fp : CPtr) -> Unit = "epoxy_glPrimitiveRestartNV"

///|
pub fn gl_primitive_restart_nv() -> Unit {
  epoxy_glPrimitiveRestartNV(d_glPrimitiveRestartNV.get())
}

///|
let d_glPrioritizeTextures : Dispatch = Dispatch::with_aliases(
  "glPrioritizeTextures",
  ["glPrioritizeTexturesEXT"],
)

///|
#borrow(textures, priorities)
extern "c" fn epoxy_glPrioritizeTextures(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
  priorities : FixedArray[Float],
) -> Unit = "epoxy_glPrioritizeTextures"

///|
pub fn gl_prioritize_textures(
  n : Int,
  textures : FixedArray[UInt],
  priorities : FixedArray[Float],
) -> Unit {
  epoxy_glPrioritizeTextures(
    d_glPrioritizeTextures.get(),
    n,
    textures,
    priorities,
  )
}

///|
let d_glPrioritizeTexturesEXT : Dispatch = Dispatch::with_aliases(
  "glPrioritizeTexturesEXT",
  ["glPrioritizeTextures"],
)

///|
#borrow(textures, priorities)
extern "c" fn epoxy_glPrioritizeTexturesEXT(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
  priorities : FixedArray[Float],
) -> Unit = "epoxy_glPrioritizeTexturesEXT"

///|
pub fn gl_prioritize_textures_ext(
  n : Int,
  textures : FixedArray[UInt],
  priorities : FixedArray[Float],
) -> Unit {
  epoxy_glPrioritizeTexturesEXT(
    d_glPrioritizeTexturesEXT.get(),
    n,
    textures,
    priorities,
  )
}

///|
let d_glPrioritizeTexturesxOES : Dispatch = Dispatch::new(
  "glPrioritizeTexturesxOES",
)

///|
#borrow(textures, priorities)
extern "c" fn epoxy_glPrioritizeTexturesxOES(
  fp : CPtr,
  n : Int,
  textures : FixedArray[UInt],
  priorities : FixedArray[Int],
) -> Unit = "epoxy_glPrioritizeTexturesxOES"

///|
pub fn gl_prioritize_texturesx_oes(
  n : Int,
  textures : FixedArray[UInt],
  priorities : FixedArray[Int],
) -> Unit {
  epoxy_glPrioritizeTexturesxOES(
    d_glPrioritizeTexturesxOES.get(),
    n,
    textures,
    priorities,
  )
}

///|
let d_glProgramBinary : Dispatch = Dispatch::with_aliases("glProgramBinary", [
  "glProgramBinaryOES",
])

///|
#borrow(binary)
extern "c" fn epoxy_glProgramBinary(
  fp : CPtr,
  program : UInt,
  binaryFormat : UInt,
  binary : Bytes,
  length : Int,
) -> Unit = "epoxy_glProgramBinary"

///|
pub fn gl_program_binary(
  program : UInt,
  binaryFormat : UInt,
  binary : Bytes,
  length : Int,
) -> Unit {
  epoxy_glProgramBinary(
    d_glProgramBinary.get(),
    program,
    binaryFormat,
    binary,
    length,
  )
}

///|
let d_glProgramBinaryOES : Dispatch = Dispatch::with_aliases(
  "glProgramBinaryOES",
  ["glProgramBinary"],
)

///|
#borrow(binary)
extern "c" fn epoxy_glProgramBinaryOES(
  fp : CPtr,
  program : UInt,
  binaryFormat : UInt,
  binary : Bytes,
  length : Int,
) -> Unit = "epoxy_glProgramBinaryOES"

///|
pub fn gl_program_binary_oes(
  program : UInt,
  binaryFormat : UInt,
  binary : Bytes,
  length : Int,
) -> Unit {
  epoxy_glProgramBinaryOES(
    d_glProgramBinaryOES.get(),
    program,
    binaryFormat,
    binary,
    length,
  )
}

///|
let d_glProgramBufferParametersIivNV : Dispatch = Dispatch::new(
  "glProgramBufferParametersIivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramBufferParametersIivNV(
  fp : CPtr,
  target : UInt,
  bindingIndex : UInt,
  wordIndex : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glProgramBufferParametersIivNV"

///|
pub fn gl_program_buffer_parameters_iiv_nv(
  target : UInt,
  bindingIndex : UInt,
  wordIndex : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glProgramBufferParametersIivNV(
    d_glProgramBufferParametersIivNV.get(),
    target,
    bindingIndex,
    wordIndex,
    count,
    params,
  )
}

///|
let d_glProgramBufferParametersIuivNV : Dispatch = Dispatch::new(
  "glProgramBufferParametersIuivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramBufferParametersIuivNV(
  fp : CPtr,
  target : UInt,
  bindingIndex : UInt,
  wordIndex : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glProgramBufferParametersIuivNV"

///|
pub fn gl_program_buffer_parameters_iuiv_nv(
  target : UInt,
  bindingIndex : UInt,
  wordIndex : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramBufferParametersIuivNV(
    d_glProgramBufferParametersIuivNV.get(),
    target,
    bindingIndex,
    wordIndex,
    count,
    params,
  )
}

///|
let d_glProgramBufferParametersfvNV : Dispatch = Dispatch::new(
  "glProgramBufferParametersfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramBufferParametersfvNV(
  fp : CPtr,
  target : UInt,
  bindingIndex : UInt,
  wordIndex : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glProgramBufferParametersfvNV"

///|
pub fn gl_program_buffer_parametersfv_nv(
  target : UInt,
  bindingIndex : UInt,
  wordIndex : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glProgramBufferParametersfvNV(
    d_glProgramBufferParametersfvNV.get(),
    target,
    bindingIndex,
    wordIndex,
    count,
    params,
  )
}

///|
let d_glProgramEnvParameter4dARB : Dispatch = Dispatch::new(
  "glProgramEnvParameter4dARB",
)

///|
extern "c" fn epoxy_glProgramEnvParameter4dARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glProgramEnvParameter4dARB"

///|
pub fn gl_program_env_parameter4d_arb(
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glProgramEnvParameter4dARB(
    d_glProgramEnvParameter4dARB.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramEnvParameter4dvARB : Dispatch = Dispatch::new(
  "glProgramEnvParameter4dvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramEnvParameter4dvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glProgramEnvParameter4dvARB"

///|
pub fn gl_program_env_parameter4dv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glProgramEnvParameter4dvARB(
    d_glProgramEnvParameter4dvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramEnvParameter4fARB : Dispatch = Dispatch::new(
  "glProgramEnvParameter4fARB",
)

///|
extern "c" fn epoxy_glProgramEnvParameter4fARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glProgramEnvParameter4fARB"

///|
pub fn gl_program_env_parameter4f_arb(
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glProgramEnvParameter4fARB(
    d_glProgramEnvParameter4fARB.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramEnvParameter4fvARB : Dispatch = Dispatch::new(
  "glProgramEnvParameter4fvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramEnvParameter4fvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glProgramEnvParameter4fvARB"

///|
pub fn gl_program_env_parameter4fv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glProgramEnvParameter4fvARB(
    d_glProgramEnvParameter4fvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramEnvParameterI4iNV : Dispatch = Dispatch::new(
  "glProgramEnvParameterI4iNV",
)

///|
extern "c" fn epoxy_glProgramEnvParameterI4iNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glProgramEnvParameterI4iNV"

///|
pub fn gl_program_env_parameter_i4i_nv(
  target : UInt,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glProgramEnvParameterI4iNV(
    d_glProgramEnvParameterI4iNV.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramEnvParameterI4ivNV : Dispatch = Dispatch::new(
  "glProgramEnvParameterI4ivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramEnvParameterI4ivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glProgramEnvParameterI4ivNV"

///|
pub fn gl_program_env_parameter_i4iv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glProgramEnvParameterI4ivNV(
    d_glProgramEnvParameterI4ivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramEnvParameterI4uiNV : Dispatch = Dispatch::new(
  "glProgramEnvParameterI4uiNV",
)

///|
extern "c" fn epoxy_glProgramEnvParameterI4uiNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit = "epoxy_glProgramEnvParameterI4uiNV"

///|
pub fn gl_program_env_parameter_i4ui_nv(
  target : UInt,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit {
  epoxy_glProgramEnvParameterI4uiNV(
    d_glProgramEnvParameterI4uiNV.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramEnvParameterI4uivNV : Dispatch = Dispatch::new(
  "glProgramEnvParameterI4uivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramEnvParameterI4uivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glProgramEnvParameterI4uivNV"

///|
pub fn gl_program_env_parameter_i4uiv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramEnvParameterI4uivNV(
    d_glProgramEnvParameterI4uivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramEnvParameters4fvEXT : Dispatch = Dispatch::new(
  "glProgramEnvParameters4fvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramEnvParameters4fvEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glProgramEnvParameters4fvEXT"

///|
pub fn gl_program_env_parameters4fv_ext(
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glProgramEnvParameters4fvEXT(
    d_glProgramEnvParameters4fvEXT.get(),
    target,
    index,
    count,
    params,
  )
}

///|
let d_glProgramEnvParametersI4ivNV : Dispatch = Dispatch::new(
  "glProgramEnvParametersI4ivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramEnvParametersI4ivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glProgramEnvParametersI4ivNV"

///|
pub fn gl_program_env_parameters_i4iv_nv(
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glProgramEnvParametersI4ivNV(
    d_glProgramEnvParametersI4ivNV.get(),
    target,
    index,
    count,
    params,
  )
}

///|
let d_glProgramEnvParametersI4uivNV : Dispatch = Dispatch::new(
  "glProgramEnvParametersI4uivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramEnvParametersI4uivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glProgramEnvParametersI4uivNV"

///|
pub fn gl_program_env_parameters_i4uiv_nv(
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramEnvParametersI4uivNV(
    d_glProgramEnvParametersI4uivNV.get(),
    target,
    index,
    count,
    params,
  )
}

///|
let d_glProgramLocalParameter4dARB : Dispatch = Dispatch::new(
  "glProgramLocalParameter4dARB",
)

///|
extern "c" fn epoxy_glProgramLocalParameter4dARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glProgramLocalParameter4dARB"

///|
pub fn gl_program_local_parameter4d_arb(
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glProgramLocalParameter4dARB(
    d_glProgramLocalParameter4dARB.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramLocalParameter4dvARB : Dispatch = Dispatch::new(
  "glProgramLocalParameter4dvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramLocalParameter4dvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glProgramLocalParameter4dvARB"

///|
pub fn gl_program_local_parameter4dv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glProgramLocalParameter4dvARB(
    d_glProgramLocalParameter4dvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramLocalParameter4fARB : Dispatch = Dispatch::new(
  "glProgramLocalParameter4fARB",
)

///|
extern "c" fn epoxy_glProgramLocalParameter4fARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glProgramLocalParameter4fARB"

///|
pub fn gl_program_local_parameter4f_arb(
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glProgramLocalParameter4fARB(
    d_glProgramLocalParameter4fARB.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramLocalParameter4fvARB : Dispatch = Dispatch::new(
  "glProgramLocalParameter4fvARB",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramLocalParameter4fvARB(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glProgramLocalParameter4fvARB"

///|
pub fn gl_program_local_parameter4fv_arb(
  target : UInt,
  index : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glProgramLocalParameter4fvARB(
    d_glProgramLocalParameter4fvARB.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramLocalParameterI4iNV : Dispatch = Dispatch::new(
  "glProgramLocalParameterI4iNV",
)

///|
extern "c" fn epoxy_glProgramLocalParameterI4iNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glProgramLocalParameterI4iNV"

///|
pub fn gl_program_local_parameter_i4i_nv(
  target : UInt,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glProgramLocalParameterI4iNV(
    d_glProgramLocalParameterI4iNV.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramLocalParameterI4ivNV : Dispatch = Dispatch::new(
  "glProgramLocalParameterI4ivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramLocalParameterI4ivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glProgramLocalParameterI4ivNV"

///|
pub fn gl_program_local_parameter_i4iv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glProgramLocalParameterI4ivNV(
    d_glProgramLocalParameterI4ivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramLocalParameterI4uiNV : Dispatch = Dispatch::new(
  "glProgramLocalParameterI4uiNV",
)

///|
extern "c" fn epoxy_glProgramLocalParameterI4uiNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit = "epoxy_glProgramLocalParameterI4uiNV"

///|
pub fn gl_program_local_parameter_i4ui_nv(
  target : UInt,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit {
  epoxy_glProgramLocalParameterI4uiNV(
    d_glProgramLocalParameterI4uiNV.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramLocalParameterI4uivNV : Dispatch = Dispatch::new(
  "glProgramLocalParameterI4uivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramLocalParameterI4uivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glProgramLocalParameterI4uivNV"

///|
pub fn gl_program_local_parameter_i4uiv_nv(
  target : UInt,
  index : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramLocalParameterI4uivNV(
    d_glProgramLocalParameterI4uivNV.get(),
    target,
    index,
    params,
  )
}

///|
let d_glProgramLocalParameters4fvEXT : Dispatch = Dispatch::new(
  "glProgramLocalParameters4fvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramLocalParameters4fvEXT(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit = "epoxy_glProgramLocalParameters4fvEXT"

///|
pub fn gl_program_local_parameters4fv_ext(
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glProgramLocalParameters4fvEXT(
    d_glProgramLocalParameters4fvEXT.get(),
    target,
    index,
    count,
    params,
  )
}

///|
let d_glProgramLocalParametersI4ivNV : Dispatch = Dispatch::new(
  "glProgramLocalParametersI4ivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramLocalParametersI4ivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit = "epoxy_glProgramLocalParametersI4ivNV"

///|
pub fn gl_program_local_parameters_i4iv_nv(
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glProgramLocalParametersI4ivNV(
    d_glProgramLocalParametersI4ivNV.get(),
    target,
    index,
    count,
    params,
  )
}

///|
let d_glProgramLocalParametersI4uivNV : Dispatch = Dispatch::new(
  "glProgramLocalParametersI4uivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramLocalParametersI4uivNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glProgramLocalParametersI4uivNV"

///|
pub fn gl_program_local_parameters_i4uiv_nv(
  target : UInt,
  index : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramLocalParametersI4uivNV(
    d_glProgramLocalParametersI4uivNV.get(),
    target,
    index,
    count,
    params,
  )
}

///|
let d_glProgramNamedParameter4dNV : Dispatch = Dispatch::new(
  "glProgramNamedParameter4dNV",
)

///|
#borrow(name)
extern "c" fn epoxy_glProgramNamedParameter4dNV(
  fp : CPtr,
  id : UInt,
  len : Int,
  name : Bytes,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glProgramNamedParameter4dNV"

///|
pub fn gl_program_named_parameter4d_nv(
  id : UInt,
  len : Int,
  name : Bytes,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glProgramNamedParameter4dNV(
    d_glProgramNamedParameter4dNV.get(),
    id,
    len,
    name,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramNamedParameter4dvNV : Dispatch = Dispatch::new(
  "glProgramNamedParameter4dvNV",
)

///|
#borrow(name, v)
extern "c" fn epoxy_glProgramNamedParameter4dvNV(
  fp : CPtr,
  id : UInt,
  len : Int,
  name : Bytes,
  v : FixedArray[Double],
) -> Unit = "epoxy_glProgramNamedParameter4dvNV"

///|
pub fn gl_program_named_parameter4dv_nv(
  id : UInt,
  len : Int,
  name : Bytes,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glProgramNamedParameter4dvNV(
    d_glProgramNamedParameter4dvNV.get(),
    id,
    len,
    name,
    v,
  )
}

///|
let d_glProgramNamedParameter4fNV : Dispatch = Dispatch::new(
  "glProgramNamedParameter4fNV",
)

///|
#borrow(name)
extern "c" fn epoxy_glProgramNamedParameter4fNV(
  fp : CPtr,
  id : UInt,
  len : Int,
  name : Bytes,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glProgramNamedParameter4fNV"

///|
pub fn gl_program_named_parameter4f_nv(
  id : UInt,
  len : Int,
  name : Bytes,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glProgramNamedParameter4fNV(
    d_glProgramNamedParameter4fNV.get(),
    id,
    len,
    name,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramNamedParameter4fvNV : Dispatch = Dispatch::new(
  "glProgramNamedParameter4fvNV",
)

///|
#borrow(name, v)
extern "c" fn epoxy_glProgramNamedParameter4fvNV(
  fp : CPtr,
  id : UInt,
  len : Int,
  name : Bytes,
  v : FixedArray[Float],
) -> Unit = "epoxy_glProgramNamedParameter4fvNV"

///|
pub fn gl_program_named_parameter4fv_nv(
  id : UInt,
  len : Int,
  name : Bytes,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glProgramNamedParameter4fvNV(
    d_glProgramNamedParameter4fvNV.get(),
    id,
    len,
    name,
    v,
  )
}

///|
let d_glProgramParameter4dNV : Dispatch = Dispatch::new(
  "glProgramParameter4dNV",
)

///|
extern "c" fn epoxy_glProgramParameter4dNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glProgramParameter4dNV"

///|
pub fn gl_program_parameter4d_nv(
  target : UInt,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glProgramParameter4dNV(
    d_glProgramParameter4dNV.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramParameter4dvNV : Dispatch = Dispatch::new(
  "glProgramParameter4dvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glProgramParameter4dvNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glProgramParameter4dvNV"

///|
pub fn gl_program_parameter4dv_nv(
  target : UInt,
  index : UInt,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glProgramParameter4dvNV(
    d_glProgramParameter4dvNV.get(),
    target,
    index,
    v,
  )
}

///|
let d_glProgramParameter4fNV : Dispatch = Dispatch::new(
  "glProgramParameter4fNV",
)

///|
extern "c" fn epoxy_glProgramParameter4fNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glProgramParameter4fNV"

///|
pub fn gl_program_parameter4f_nv(
  target : UInt,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glProgramParameter4fNV(
    d_glProgramParameter4fNV.get(),
    target,
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramParameter4fvNV : Dispatch = Dispatch::new(
  "glProgramParameter4fvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glProgramParameter4fvNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glProgramParameter4fvNV"

///|
pub fn gl_program_parameter4fv_nv(
  target : UInt,
  index : UInt,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glProgramParameter4fvNV(
    d_glProgramParameter4fvNV.get(),
    target,
    index,
    v,
  )
}

///|
let d_glProgramParameteri : Dispatch = Dispatch::with_aliases(
  "glProgramParameteri",
  ["glProgramParameteriARB", "glProgramParameteriEXT"],
)

///|
extern "c" fn epoxy_glProgramParameteri(
  fp : CPtr,
  program : UInt,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glProgramParameteri"

///|
pub fn gl_program_parameteri(program : UInt, pname : UInt, value : Int) -> Unit {
  epoxy_glProgramParameteri(d_glProgramParameteri.get(), program, pname, value)
}

///|
let d_glProgramParameteriARB : Dispatch = Dispatch::with_aliases(
  "glProgramParameteriARB",
  ["glProgramParameteri", "glProgramParameteriEXT"],
)

///|
extern "c" fn epoxy_glProgramParameteriARB(
  fp : CPtr,
  program : UInt,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glProgramParameteriARB"

///|
pub fn gl_program_parameteri_arb(
  program : UInt,
  pname : UInt,
  value : Int,
) -> Unit {
  epoxy_glProgramParameteriARB(
    d_glProgramParameteriARB.get(),
    program,
    pname,
    value,
  )
}

///|
let d_glProgramParameteriEXT : Dispatch = Dispatch::with_aliases(
  "glProgramParameteriEXT",
  ["glProgramParameteri", "glProgramParameteriARB"],
)

///|
extern "c" fn epoxy_glProgramParameteriEXT(
  fp : CPtr,
  program : UInt,
  pname : UInt,
  value : Int,
) -> Unit = "epoxy_glProgramParameteriEXT"

///|
pub fn gl_program_parameteri_ext(
  program : UInt,
  pname : UInt,
  value : Int,
) -> Unit {
  epoxy_glProgramParameteriEXT(
    d_glProgramParameteriEXT.get(),
    program,
    pname,
    value,
  )
}

///|
let d_glProgramParameters4dvNV : Dispatch = Dispatch::new(
  "glProgramParameters4dvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glProgramParameters4dvNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glProgramParameters4dvNV"

///|
pub fn gl_program_parameters4dv_nv(
  target : UInt,
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glProgramParameters4dvNV(
    d_glProgramParameters4dvNV.get(),
    target,
    index,
    count,
    v,
  )
}

///|
let d_glProgramParameters4fvNV : Dispatch = Dispatch::new(
  "glProgramParameters4fvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glProgramParameters4fvNV(
  fp : CPtr,
  target : UInt,
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glProgramParameters4fvNV"

///|
pub fn gl_program_parameters4fv_nv(
  target : UInt,
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glProgramParameters4fvNV(
    d_glProgramParameters4fvNV.get(),
    target,
    index,
    count,
    v,
  )
}

///|
let d_glProgramPathFragmentInputGenNV : Dispatch = Dispatch::new(
  "glProgramPathFragmentInputGenNV",
)

///|
#borrow(coeffs)
extern "c" fn epoxy_glProgramPathFragmentInputGenNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  genMode : UInt,
  components : Int,
  coeffs : FixedArray[Float],
) -> Unit = "epoxy_glProgramPathFragmentInputGenNV"

///|
pub fn gl_program_path_fragment_input_gen_nv(
  program : UInt,
  location : Int,
  genMode : UInt,
  components : Int,
  coeffs : FixedArray[Float],
) -> Unit {
  epoxy_glProgramPathFragmentInputGenNV(
    d_glProgramPathFragmentInputGenNV.get(),
    program,
    location,
    genMode,
    components,
    coeffs,
  )
}

///|
let d_glProgramStringARB : Dispatch = Dispatch::new("glProgramStringARB")

///|
#borrow(string)
extern "c" fn epoxy_glProgramStringARB(
  fp : CPtr,
  target : UInt,
  format : UInt,
  len : Int,
  string : Bytes,
) -> Unit = "epoxy_glProgramStringARB"

///|
pub fn gl_program_string_arb(
  target : UInt,
  format : UInt,
  len : Int,
  string : Bytes,
) -> Unit {
  epoxy_glProgramStringARB(
    d_glProgramStringARB.get(),
    target,
    format,
    len,
    string,
  )
}

///|
let d_glProgramSubroutineParametersuivNV : Dispatch = Dispatch::new(
  "glProgramSubroutineParametersuivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glProgramSubroutineParametersuivNV(
  fp : CPtr,
  target : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glProgramSubroutineParametersuivNV"

///|
pub fn gl_program_subroutine_parametersuiv_nv(
  target : UInt,
  count : Int,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramSubroutineParametersuivNV(
    d_glProgramSubroutineParametersuivNV.get(),
    target,
    count,
    params,
  )
}

///|
let d_glProgramUniform1d : Dispatch = Dispatch::new("glProgramUniform1d")

///|
extern "c" fn epoxy_glProgramUniform1d(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Double,
) -> Unit = "epoxy_glProgramUniform1d"

///|
pub fn gl_program_uniform1d(
  program : UInt,
  location : Int,
  v0 : Double,
) -> Unit {
  epoxy_glProgramUniform1d(d_glProgramUniform1d.get(), program, location, v0)
}

///|
let d_glProgramUniform1dEXT : Dispatch = Dispatch::new("glProgramUniform1dEXT")

///|
extern "c" fn epoxy_glProgramUniform1dEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Double,
) -> Unit = "epoxy_glProgramUniform1dEXT"

///|
pub fn gl_program_uniform1d_ext(
  program : UInt,
  location : Int,
  x : Double,
) -> Unit {
  epoxy_glProgramUniform1dEXT(
    d_glProgramUniform1dEXT.get(),
    program,
    location,
    x,
  )
}

///|
let d_glProgramUniform1dv : Dispatch = Dispatch::new("glProgramUniform1dv")

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform1dv"

///|
pub fn gl_program_uniform1dv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform1dv(
    d_glProgramUniform1dv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1dvEXT : Dispatch = Dispatch::new(
  "glProgramUniform1dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform1dvEXT"

///|
pub fn gl_program_uniform1dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform1dvEXT(
    d_glProgramUniform1dvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1f : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1f",
  ["glProgramUniform1fEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform1f(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
) -> Unit = "epoxy_glProgramUniform1f"

///|
pub fn gl_program_uniform1f(program : UInt, location : Int, v0 : Float) -> Unit {
  epoxy_glProgramUniform1f(d_glProgramUniform1f.get(), program, location, v0)
}

///|
let d_glProgramUniform1fEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1fEXT",
  ["glProgramUniform1f"],
)

///|
extern "c" fn epoxy_glProgramUniform1fEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
) -> Unit = "epoxy_glProgramUniform1fEXT"

///|
pub fn gl_program_uniform1f_ext(
  program : UInt,
  location : Int,
  v0 : Float,
) -> Unit {
  epoxy_glProgramUniform1fEXT(
    d_glProgramUniform1fEXT.get(),
    program,
    location,
    v0,
  )
}

///|
let d_glProgramUniform1fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1fv",
  ["glProgramUniform1fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform1fv"

///|
pub fn gl_program_uniform1fv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform1fv(
    d_glProgramUniform1fv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1fvEXT",
  ["glProgramUniform1fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform1fvEXT"

///|
pub fn gl_program_uniform1fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform1fvEXT(
    d_glProgramUniform1fvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1i : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1i",
  ["glProgramUniform1iEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform1i(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
) -> Unit = "epoxy_glProgramUniform1i"

///|
pub fn gl_program_uniform1i(program : UInt, location : Int, v0 : Int) -> Unit {
  epoxy_glProgramUniform1i(d_glProgramUniform1i.get(), program, location, v0)
}

///|
let d_glProgramUniform1i64ARB : Dispatch = Dispatch::new(
  "glProgramUniform1i64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform1i64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
) -> Unit = "epoxy_glProgramUniform1i64ARB"

///|
pub fn gl_program_uniform1i64_arb(
  program : UInt,
  location : Int,
  x : Int64,
) -> Unit {
  epoxy_glProgramUniform1i64ARB(
    d_glProgramUniform1i64ARB.get(),
    program,
    location,
    x,
  )
}

///|
let d_glProgramUniform1i64NV : Dispatch = Dispatch::new(
  "glProgramUniform1i64NV",
)

///|
extern "c" fn epoxy_glProgramUniform1i64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
) -> Unit = "epoxy_glProgramUniform1i64NV"

///|
pub fn gl_program_uniform1i64_nv(
  program : UInt,
  location : Int,
  x : Int64,
) -> Unit {
  epoxy_glProgramUniform1i64NV(
    d_glProgramUniform1i64NV.get(),
    program,
    location,
    x,
  )
}

///|
let d_glProgramUniform1i64vARB : Dispatch = Dispatch::new(
  "glProgramUniform1i64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1i64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform1i64vARB"

///|
pub fn gl_program_uniform1i64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform1i64vARB(
    d_glProgramUniform1i64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1i64vNV : Dispatch = Dispatch::new(
  "glProgramUniform1i64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1i64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform1i64vNV"

///|
pub fn gl_program_uniform1i64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform1i64vNV(
    d_glProgramUniform1i64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1iEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1iEXT",
  ["glProgramUniform1i"],
)

///|
extern "c" fn epoxy_glProgramUniform1iEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
) -> Unit = "epoxy_glProgramUniform1iEXT"

///|
pub fn gl_program_uniform1i_ext(
  program : UInt,
  location : Int,
  v0 : Int,
) -> Unit {
  epoxy_glProgramUniform1iEXT(
    d_glProgramUniform1iEXT.get(),
    program,
    location,
    v0,
  )
}

///|
let d_glProgramUniform1iv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1iv",
  ["glProgramUniform1ivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1iv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform1iv"

///|
pub fn gl_program_uniform1iv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform1iv(
    d_glProgramUniform1iv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1ivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1ivEXT",
  ["glProgramUniform1iv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1ivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform1ivEXT"

///|
pub fn gl_program_uniform1iv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform1ivEXT(
    d_glProgramUniform1ivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1ui : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1ui",
  ["glProgramUniform1uiEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform1ui(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
) -> Unit = "epoxy_glProgramUniform1ui"

///|
pub fn gl_program_uniform1ui(program : UInt, location : Int, v0 : UInt) -> Unit {
  epoxy_glProgramUniform1ui(d_glProgramUniform1ui.get(), program, location, v0)
}

///|
let d_glProgramUniform1ui64ARB : Dispatch = Dispatch::new(
  "glProgramUniform1ui64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform1ui64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
) -> Unit = "epoxy_glProgramUniform1ui64ARB"

///|
pub fn gl_program_uniform1ui64_arb(
  program : UInt,
  location : Int,
  x : UInt64,
) -> Unit {
  epoxy_glProgramUniform1ui64ARB(
    d_glProgramUniform1ui64ARB.get(),
    program,
    location,
    x,
  )
}

///|
let d_glProgramUniform1ui64NV : Dispatch = Dispatch::new(
  "glProgramUniform1ui64NV",
)

///|
extern "c" fn epoxy_glProgramUniform1ui64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
) -> Unit = "epoxy_glProgramUniform1ui64NV"

///|
pub fn gl_program_uniform1ui64_nv(
  program : UInt,
  location : Int,
  x : UInt64,
) -> Unit {
  epoxy_glProgramUniform1ui64NV(
    d_glProgramUniform1ui64NV.get(),
    program,
    location,
    x,
  )
}

///|
let d_glProgramUniform1ui64vARB : Dispatch = Dispatch::new(
  "glProgramUniform1ui64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1ui64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform1ui64vARB"

///|
pub fn gl_program_uniform1ui64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform1ui64vARB(
    d_glProgramUniform1ui64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1ui64vNV : Dispatch = Dispatch::new(
  "glProgramUniform1ui64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1ui64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform1ui64vNV"

///|
pub fn gl_program_uniform1ui64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform1ui64vNV(
    d_glProgramUniform1ui64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1uiEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1uiEXT",
  ["glProgramUniform1ui"],
)

///|
extern "c" fn epoxy_glProgramUniform1uiEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
) -> Unit = "epoxy_glProgramUniform1uiEXT"

///|
pub fn gl_program_uniform1ui_ext(
  program : UInt,
  location : Int,
  v0 : UInt,
) -> Unit {
  epoxy_glProgramUniform1uiEXT(
    d_glProgramUniform1uiEXT.get(),
    program,
    location,
    v0,
  )
}

///|
let d_glProgramUniform1uiv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1uiv",
  ["glProgramUniform1uivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1uiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform1uiv"

///|
pub fn gl_program_uniform1uiv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform1uiv(
    d_glProgramUniform1uiv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform1uivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform1uivEXT",
  ["glProgramUniform1uiv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform1uivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform1uivEXT"

///|
pub fn gl_program_uniform1uiv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform1uivEXT(
    d_glProgramUniform1uivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2d : Dispatch = Dispatch::new("glProgramUniform2d")

///|
extern "c" fn epoxy_glProgramUniform2d(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Double,
  v1 : Double,
) -> Unit = "epoxy_glProgramUniform2d"

///|
pub fn gl_program_uniform2d(
  program : UInt,
  location : Int,
  v0 : Double,
  v1 : Double,
) -> Unit {
  epoxy_glProgramUniform2d(
    d_glProgramUniform2d.get(),
    program,
    location,
    v0,
    v1,
  )
}

///|
let d_glProgramUniform2dEXT : Dispatch = Dispatch::new("glProgramUniform2dEXT")

///|
extern "c" fn epoxy_glProgramUniform2dEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glProgramUniform2dEXT"

///|
pub fn gl_program_uniform2d_ext(
  program : UInt,
  location : Int,
  x : Double,
  y : Double,
) -> Unit {
  epoxy_glProgramUniform2dEXT(
    d_glProgramUniform2dEXT.get(),
    program,
    location,
    x,
    y,
  )
}

///|
let d_glProgramUniform2dv : Dispatch = Dispatch::new("glProgramUniform2dv")

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform2dv"

///|
pub fn gl_program_uniform2dv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform2dv(
    d_glProgramUniform2dv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2dvEXT : Dispatch = Dispatch::new(
  "glProgramUniform2dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform2dvEXT"

///|
pub fn gl_program_uniform2dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform2dvEXT(
    d_glProgramUniform2dvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2f : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2f",
  ["glProgramUniform2fEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform2f(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
) -> Unit = "epoxy_glProgramUniform2f"

///|
pub fn gl_program_uniform2f(
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
) -> Unit {
  epoxy_glProgramUniform2f(
    d_glProgramUniform2f.get(),
    program,
    location,
    v0,
    v1,
  )
}

///|
let d_glProgramUniform2fEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2fEXT",
  ["glProgramUniform2f"],
)

///|
extern "c" fn epoxy_glProgramUniform2fEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
) -> Unit = "epoxy_glProgramUniform2fEXT"

///|
pub fn gl_program_uniform2f_ext(
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
) -> Unit {
  epoxy_glProgramUniform2fEXT(
    d_glProgramUniform2fEXT.get(),
    program,
    location,
    v0,
    v1,
  )
}

///|
let d_glProgramUniform2fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2fv",
  ["glProgramUniform2fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform2fv"

///|
pub fn gl_program_uniform2fv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform2fv(
    d_glProgramUniform2fv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2fvEXT",
  ["glProgramUniform2fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform2fvEXT"

///|
pub fn gl_program_uniform2fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform2fvEXT(
    d_glProgramUniform2fvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2i : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2i",
  ["glProgramUniform2iEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform2i(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
) -> Unit = "epoxy_glProgramUniform2i"

///|
pub fn gl_program_uniform2i(
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
) -> Unit {
  epoxy_glProgramUniform2i(
    d_glProgramUniform2i.get(),
    program,
    location,
    v0,
    v1,
  )
}

///|
let d_glProgramUniform2i64ARB : Dispatch = Dispatch::new(
  "glProgramUniform2i64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform2i64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
) -> Unit = "epoxy_glProgramUniform2i64ARB"

///|
pub fn gl_program_uniform2i64_arb(
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
) -> Unit {
  epoxy_glProgramUniform2i64ARB(
    d_glProgramUniform2i64ARB.get(),
    program,
    location,
    x,
    y,
  )
}

///|
let d_glProgramUniform2i64NV : Dispatch = Dispatch::new(
  "glProgramUniform2i64NV",
)

///|
extern "c" fn epoxy_glProgramUniform2i64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
) -> Unit = "epoxy_glProgramUniform2i64NV"

///|
pub fn gl_program_uniform2i64_nv(
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
) -> Unit {
  epoxy_glProgramUniform2i64NV(
    d_glProgramUniform2i64NV.get(),
    program,
    location,
    x,
    y,
  )
}

///|
let d_glProgramUniform2i64vARB : Dispatch = Dispatch::new(
  "glProgramUniform2i64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2i64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform2i64vARB"

///|
pub fn gl_program_uniform2i64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform2i64vARB(
    d_glProgramUniform2i64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2i64vNV : Dispatch = Dispatch::new(
  "glProgramUniform2i64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2i64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform2i64vNV"

///|
pub fn gl_program_uniform2i64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform2i64vNV(
    d_glProgramUniform2i64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2iEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2iEXT",
  ["glProgramUniform2i"],
)

///|
extern "c" fn epoxy_glProgramUniform2iEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
) -> Unit = "epoxy_glProgramUniform2iEXT"

///|
pub fn gl_program_uniform2i_ext(
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
) -> Unit {
  epoxy_glProgramUniform2iEXT(
    d_glProgramUniform2iEXT.get(),
    program,
    location,
    v0,
    v1,
  )
}

///|
let d_glProgramUniform2iv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2iv",
  ["glProgramUniform2ivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2iv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform2iv"

///|
pub fn gl_program_uniform2iv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform2iv(
    d_glProgramUniform2iv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2ivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2ivEXT",
  ["glProgramUniform2iv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2ivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform2ivEXT"

///|
pub fn gl_program_uniform2iv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform2ivEXT(
    d_glProgramUniform2ivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2ui : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2ui",
  ["glProgramUniform2uiEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform2ui(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
) -> Unit = "epoxy_glProgramUniform2ui"

///|
pub fn gl_program_uniform2ui(
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
) -> Unit {
  epoxy_glProgramUniform2ui(
    d_glProgramUniform2ui.get(),
    program,
    location,
    v0,
    v1,
  )
}

///|
let d_glProgramUniform2ui64ARB : Dispatch = Dispatch::new(
  "glProgramUniform2ui64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform2ui64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
) -> Unit = "epoxy_glProgramUniform2ui64ARB"

///|
pub fn gl_program_uniform2ui64_arb(
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
) -> Unit {
  epoxy_glProgramUniform2ui64ARB(
    d_glProgramUniform2ui64ARB.get(),
    program,
    location,
    x,
    y,
  )
}

///|
let d_glProgramUniform2ui64NV : Dispatch = Dispatch::new(
  "glProgramUniform2ui64NV",
)

///|
extern "c" fn epoxy_glProgramUniform2ui64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
) -> Unit = "epoxy_glProgramUniform2ui64NV"

///|
pub fn gl_program_uniform2ui64_nv(
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
) -> Unit {
  epoxy_glProgramUniform2ui64NV(
    d_glProgramUniform2ui64NV.get(),
    program,
    location,
    x,
    y,
  )
}

///|
let d_glProgramUniform2ui64vARB : Dispatch = Dispatch::new(
  "glProgramUniform2ui64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2ui64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform2ui64vARB"

///|
pub fn gl_program_uniform2ui64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform2ui64vARB(
    d_glProgramUniform2ui64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2ui64vNV : Dispatch = Dispatch::new(
  "glProgramUniform2ui64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2ui64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform2ui64vNV"

///|
pub fn gl_program_uniform2ui64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform2ui64vNV(
    d_glProgramUniform2ui64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2uiEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2uiEXT",
  ["glProgramUniform2ui"],
)

///|
extern "c" fn epoxy_glProgramUniform2uiEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
) -> Unit = "epoxy_glProgramUniform2uiEXT"

///|
pub fn gl_program_uniform2ui_ext(
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
) -> Unit {
  epoxy_glProgramUniform2uiEXT(
    d_glProgramUniform2uiEXT.get(),
    program,
    location,
    v0,
    v1,
  )
}

///|
let d_glProgramUniform2uiv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2uiv",
  ["glProgramUniform2uivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2uiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform2uiv"

///|
pub fn gl_program_uniform2uiv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform2uiv(
    d_glProgramUniform2uiv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform2uivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform2uivEXT",
  ["glProgramUniform2uiv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform2uivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform2uivEXT"

///|
pub fn gl_program_uniform2uiv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform2uivEXT(
    d_glProgramUniform2uivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3d : Dispatch = Dispatch::new("glProgramUniform3d")

///|
extern "c" fn epoxy_glProgramUniform3d(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Double,
  v1 : Double,
  v2 : Double,
) -> Unit = "epoxy_glProgramUniform3d"

///|
pub fn gl_program_uniform3d(
  program : UInt,
  location : Int,
  v0 : Double,
  v1 : Double,
  v2 : Double,
) -> Unit {
  epoxy_glProgramUniform3d(
    d_glProgramUniform3d.get(),
    program,
    location,
    v0,
    v1,
    v2,
  )
}

///|
let d_glProgramUniform3dEXT : Dispatch = Dispatch::new("glProgramUniform3dEXT")

///|
extern "c" fn epoxy_glProgramUniform3dEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glProgramUniform3dEXT"

///|
pub fn gl_program_uniform3d_ext(
  program : UInt,
  location : Int,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glProgramUniform3dEXT(
    d_glProgramUniform3dEXT.get(),
    program,
    location,
    x,
    y,
    z,
  )
}

///|
let d_glProgramUniform3dv : Dispatch = Dispatch::new("glProgramUniform3dv")

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform3dv"

///|
pub fn gl_program_uniform3dv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform3dv(
    d_glProgramUniform3dv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3dvEXT : Dispatch = Dispatch::new(
  "glProgramUniform3dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform3dvEXT"

///|
pub fn gl_program_uniform3dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform3dvEXT(
    d_glProgramUniform3dvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3f : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3f",
  ["glProgramUniform3fEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform3f(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
) -> Unit = "epoxy_glProgramUniform3f"

///|
pub fn gl_program_uniform3f(
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
) -> Unit {
  epoxy_glProgramUniform3f(
    d_glProgramUniform3f.get(),
    program,
    location,
    v0,
    v1,
    v2,
  )
}

///|
let d_glProgramUniform3fEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3fEXT",
  ["glProgramUniform3f"],
)

///|
extern "c" fn epoxy_glProgramUniform3fEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
) -> Unit = "epoxy_glProgramUniform3fEXT"

///|
pub fn gl_program_uniform3f_ext(
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
) -> Unit {
  epoxy_glProgramUniform3fEXT(
    d_glProgramUniform3fEXT.get(),
    program,
    location,
    v0,
    v1,
    v2,
  )
}

///|
let d_glProgramUniform3fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3fv",
  ["glProgramUniform3fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform3fv"

///|
pub fn gl_program_uniform3fv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform3fv(
    d_glProgramUniform3fv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3fvEXT",
  ["glProgramUniform3fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform3fvEXT"

///|
pub fn gl_program_uniform3fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform3fvEXT(
    d_glProgramUniform3fvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3i : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3i",
  ["glProgramUniform3iEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform3i(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit = "epoxy_glProgramUniform3i"

///|
pub fn gl_program_uniform3i(
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit {
  epoxy_glProgramUniform3i(
    d_glProgramUniform3i.get(),
    program,
    location,
    v0,
    v1,
    v2,
  )
}

///|
let d_glProgramUniform3i64ARB : Dispatch = Dispatch::new(
  "glProgramUniform3i64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform3i64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit = "epoxy_glProgramUniform3i64ARB"

///|
pub fn gl_program_uniform3i64_arb(
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit {
  epoxy_glProgramUniform3i64ARB(
    d_glProgramUniform3i64ARB.get(),
    program,
    location,
    x,
    y,
    z,
  )
}

///|
let d_glProgramUniform3i64NV : Dispatch = Dispatch::new(
  "glProgramUniform3i64NV",
)

///|
extern "c" fn epoxy_glProgramUniform3i64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit = "epoxy_glProgramUniform3i64NV"

///|
pub fn gl_program_uniform3i64_nv(
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit {
  epoxy_glProgramUniform3i64NV(
    d_glProgramUniform3i64NV.get(),
    program,
    location,
    x,
    y,
    z,
  )
}

///|
let d_glProgramUniform3i64vARB : Dispatch = Dispatch::new(
  "glProgramUniform3i64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3i64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform3i64vARB"

///|
pub fn gl_program_uniform3i64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform3i64vARB(
    d_glProgramUniform3i64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3i64vNV : Dispatch = Dispatch::new(
  "glProgramUniform3i64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3i64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform3i64vNV"

///|
pub fn gl_program_uniform3i64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform3i64vNV(
    d_glProgramUniform3i64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3iEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3iEXT",
  ["glProgramUniform3i"],
)

///|
extern "c" fn epoxy_glProgramUniform3iEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit = "epoxy_glProgramUniform3iEXT"

///|
pub fn gl_program_uniform3i_ext(
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit {
  epoxy_glProgramUniform3iEXT(
    d_glProgramUniform3iEXT.get(),
    program,
    location,
    v0,
    v1,
    v2,
  )
}

///|
let d_glProgramUniform3iv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3iv",
  ["glProgramUniform3ivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3iv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform3iv"

///|
pub fn gl_program_uniform3iv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform3iv(
    d_glProgramUniform3iv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3ivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3ivEXT",
  ["glProgramUniform3iv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3ivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform3ivEXT"

///|
pub fn gl_program_uniform3iv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform3ivEXT(
    d_glProgramUniform3ivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3ui : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3ui",
  ["glProgramUniform3uiEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform3ui(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
) -> Unit = "epoxy_glProgramUniform3ui"

///|
pub fn gl_program_uniform3ui(
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
) -> Unit {
  epoxy_glProgramUniform3ui(
    d_glProgramUniform3ui.get(),
    program,
    location,
    v0,
    v1,
    v2,
  )
}

///|
let d_glProgramUniform3ui64ARB : Dispatch = Dispatch::new(
  "glProgramUniform3ui64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform3ui64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit = "epoxy_glProgramUniform3ui64ARB"

///|
pub fn gl_program_uniform3ui64_arb(
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit {
  epoxy_glProgramUniform3ui64ARB(
    d_glProgramUniform3ui64ARB.get(),
    program,
    location,
    x,
    y,
    z,
  )
}

///|
let d_glProgramUniform3ui64NV : Dispatch = Dispatch::new(
  "glProgramUniform3ui64NV",
)

///|
extern "c" fn epoxy_glProgramUniform3ui64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit = "epoxy_glProgramUniform3ui64NV"

///|
pub fn gl_program_uniform3ui64_nv(
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit {
  epoxy_glProgramUniform3ui64NV(
    d_glProgramUniform3ui64NV.get(),
    program,
    location,
    x,
    y,
    z,
  )
}

///|
let d_glProgramUniform3ui64vARB : Dispatch = Dispatch::new(
  "glProgramUniform3ui64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3ui64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform3ui64vARB"

///|
pub fn gl_program_uniform3ui64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform3ui64vARB(
    d_glProgramUniform3ui64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3ui64vNV : Dispatch = Dispatch::new(
  "glProgramUniform3ui64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3ui64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform3ui64vNV"

///|
pub fn gl_program_uniform3ui64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform3ui64vNV(
    d_glProgramUniform3ui64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3uiEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3uiEXT",
  ["glProgramUniform3ui"],
)

///|
extern "c" fn epoxy_glProgramUniform3uiEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
) -> Unit = "epoxy_glProgramUniform3uiEXT"

///|
pub fn gl_program_uniform3ui_ext(
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
) -> Unit {
  epoxy_glProgramUniform3uiEXT(
    d_glProgramUniform3uiEXT.get(),
    program,
    location,
    v0,
    v1,
    v2,
  )
}

///|
let d_glProgramUniform3uiv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3uiv",
  ["glProgramUniform3uivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3uiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform3uiv"

///|
pub fn gl_program_uniform3uiv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform3uiv(
    d_glProgramUniform3uiv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform3uivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform3uivEXT",
  ["glProgramUniform3uiv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform3uivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform3uivEXT"

///|
pub fn gl_program_uniform3uiv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform3uivEXT(
    d_glProgramUniform3uivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4d : Dispatch = Dispatch::new("glProgramUniform4d")

///|
extern "c" fn epoxy_glProgramUniform4d(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Double,
  v1 : Double,
  v2 : Double,
  v3 : Double,
) -> Unit = "epoxy_glProgramUniform4d"

///|
pub fn gl_program_uniform4d(
  program : UInt,
  location : Int,
  v0 : Double,
  v1 : Double,
  v2 : Double,
  v3 : Double,
) -> Unit {
  epoxy_glProgramUniform4d(
    d_glProgramUniform4d.get(),
    program,
    location,
    v0,
    v1,
    v2,
    v3,
  )
}

///|
let d_glProgramUniform4dEXT : Dispatch = Dispatch::new("glProgramUniform4dEXT")

///|
extern "c" fn epoxy_glProgramUniform4dEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glProgramUniform4dEXT"

///|
pub fn gl_program_uniform4d_ext(
  program : UInt,
  location : Int,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glProgramUniform4dEXT(
    d_glProgramUniform4dEXT.get(),
    program,
    location,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramUniform4dv : Dispatch = Dispatch::new("glProgramUniform4dv")

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform4dv"

///|
pub fn gl_program_uniform4dv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform4dv(
    d_glProgramUniform4dv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4dvEXT : Dispatch = Dispatch::new(
  "glProgramUniform4dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniform4dvEXT"

///|
pub fn gl_program_uniform4dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniform4dvEXT(
    d_glProgramUniform4dvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4f : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4f",
  ["glProgramUniform4fEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform4f(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit = "epoxy_glProgramUniform4f"

///|
pub fn gl_program_uniform4f(
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit {
  epoxy_glProgramUniform4f(
    d_glProgramUniform4f.get(),
    program,
    location,
    v0,
    v1,
    v2,
    v3,
  )
}

///|
let d_glProgramUniform4fEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4fEXT",
  ["glProgramUniform4f"],
)

///|
extern "c" fn epoxy_glProgramUniform4fEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit = "epoxy_glProgramUniform4fEXT"

///|
pub fn gl_program_uniform4f_ext(
  program : UInt,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit {
  epoxy_glProgramUniform4fEXT(
    d_glProgramUniform4fEXT.get(),
    program,
    location,
    v0,
    v1,
    v2,
    v3,
  )
}

///|
let d_glProgramUniform4fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4fv",
  ["glProgramUniform4fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform4fv"

///|
pub fn gl_program_uniform4fv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform4fv(
    d_glProgramUniform4fv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4fvEXT",
  ["glProgramUniform4fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniform4fvEXT"

///|
pub fn gl_program_uniform4fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniform4fvEXT(
    d_glProgramUniform4fvEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4i : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4i",
  ["glProgramUniform4iEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform4i(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit = "epoxy_glProgramUniform4i"

///|
pub fn gl_program_uniform4i(
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit {
  epoxy_glProgramUniform4i(
    d_glProgramUniform4i.get(),
    program,
    location,
    v0,
    v1,
    v2,
    v3,
  )
}

///|
let d_glProgramUniform4i64ARB : Dispatch = Dispatch::new(
  "glProgramUniform4i64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform4i64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit = "epoxy_glProgramUniform4i64ARB"

///|
pub fn gl_program_uniform4i64_arb(
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit {
  epoxy_glProgramUniform4i64ARB(
    d_glProgramUniform4i64ARB.get(),
    program,
    location,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramUniform4i64NV : Dispatch = Dispatch::new(
  "glProgramUniform4i64NV",
)

///|
extern "c" fn epoxy_glProgramUniform4i64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit = "epoxy_glProgramUniform4i64NV"

///|
pub fn gl_program_uniform4i64_nv(
  program : UInt,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit {
  epoxy_glProgramUniform4i64NV(
    d_glProgramUniform4i64NV.get(),
    program,
    location,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramUniform4i64vARB : Dispatch = Dispatch::new(
  "glProgramUniform4i64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4i64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform4i64vARB"

///|
pub fn gl_program_uniform4i64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform4i64vARB(
    d_glProgramUniform4i64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4i64vNV : Dispatch = Dispatch::new(
  "glProgramUniform4i64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4i64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glProgramUniform4i64vNV"

///|
pub fn gl_program_uniform4i64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glProgramUniform4i64vNV(
    d_glProgramUniform4i64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4iEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4iEXT",
  ["glProgramUniform4i"],
)

///|
extern "c" fn epoxy_glProgramUniform4iEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit = "epoxy_glProgramUniform4iEXT"

///|
pub fn gl_program_uniform4i_ext(
  program : UInt,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit {
  epoxy_glProgramUniform4iEXT(
    d_glProgramUniform4iEXT.get(),
    program,
    location,
    v0,
    v1,
    v2,
    v3,
  )
}

///|
let d_glProgramUniform4iv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4iv",
  ["glProgramUniform4ivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4iv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform4iv"

///|
pub fn gl_program_uniform4iv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform4iv(
    d_glProgramUniform4iv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4ivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4ivEXT",
  ["glProgramUniform4iv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4ivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glProgramUniform4ivEXT"

///|
pub fn gl_program_uniform4iv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glProgramUniform4ivEXT(
    d_glProgramUniform4ivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4ui : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4ui",
  ["glProgramUniform4uiEXT"],
)

///|
extern "c" fn epoxy_glProgramUniform4ui(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit = "epoxy_glProgramUniform4ui"

///|
pub fn gl_program_uniform4ui(
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit {
  epoxy_glProgramUniform4ui(
    d_glProgramUniform4ui.get(),
    program,
    location,
    v0,
    v1,
    v2,
    v3,
  )
}

///|
let d_glProgramUniform4ui64ARB : Dispatch = Dispatch::new(
  "glProgramUniform4ui64ARB",
)

///|
extern "c" fn epoxy_glProgramUniform4ui64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit = "epoxy_glProgramUniform4ui64ARB"

///|
pub fn gl_program_uniform4ui64_arb(
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit {
  epoxy_glProgramUniform4ui64ARB(
    d_glProgramUniform4ui64ARB.get(),
    program,
    location,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramUniform4ui64NV : Dispatch = Dispatch::new(
  "glProgramUniform4ui64NV",
)

///|
extern "c" fn epoxy_glProgramUniform4ui64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit = "epoxy_glProgramUniform4ui64NV"

///|
pub fn gl_program_uniform4ui64_nv(
  program : UInt,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit {
  epoxy_glProgramUniform4ui64NV(
    d_glProgramUniform4ui64NV.get(),
    program,
    location,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glProgramUniform4ui64vARB : Dispatch = Dispatch::new(
  "glProgramUniform4ui64vARB",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4ui64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform4ui64vARB"

///|
pub fn gl_program_uniform4ui64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform4ui64vARB(
    d_glProgramUniform4ui64vARB.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4ui64vNV : Dispatch = Dispatch::new(
  "glProgramUniform4ui64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4ui64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniform4ui64vNV"

///|
pub fn gl_program_uniform4ui64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniform4ui64vNV(
    d_glProgramUniform4ui64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4uiEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4uiEXT",
  ["glProgramUniform4ui"],
)

///|
extern "c" fn epoxy_glProgramUniform4uiEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit = "epoxy_glProgramUniform4uiEXT"

///|
pub fn gl_program_uniform4ui_ext(
  program : UInt,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit {
  epoxy_glProgramUniform4uiEXT(
    d_glProgramUniform4uiEXT.get(),
    program,
    location,
    v0,
    v1,
    v2,
    v3,
  )
}

///|
let d_glProgramUniform4uiv : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4uiv",
  ["glProgramUniform4uivEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4uiv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform4uiv"

///|
pub fn gl_program_uniform4uiv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform4uiv(
    d_glProgramUniform4uiv.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniform4uivEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniform4uivEXT",
  ["glProgramUniform4uiv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniform4uivEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glProgramUniform4uivEXT"

///|
pub fn gl_program_uniform4uiv_ext(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glProgramUniform4uivEXT(
    d_glProgramUniform4uivEXT.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramUniformHandleui64ARB : Dispatch = Dispatch::with_aliases(
  "glProgramUniformHandleui64ARB",
  ["glProgramUniformHandleui64IMG"],
)

///|
extern "c" fn epoxy_glProgramUniformHandleui64ARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glProgramUniformHandleui64ARB"

///|
pub fn gl_program_uniform_handleui64_arb(
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit {
  epoxy_glProgramUniformHandleui64ARB(
    d_glProgramUniformHandleui64ARB.get(),
    program,
    location,
    value,
  )
}

///|
let d_glProgramUniformHandleui64IMG : Dispatch = Dispatch::with_aliases(
  "glProgramUniformHandleui64IMG",
  ["glProgramUniformHandleui64ARB"],
)

///|
extern "c" fn epoxy_glProgramUniformHandleui64IMG(
  fp : CPtr,
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glProgramUniformHandleui64IMG"

///|
pub fn gl_program_uniform_handleui64_img(
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit {
  epoxy_glProgramUniformHandleui64IMG(
    d_glProgramUniformHandleui64IMG.get(),
    program,
    location,
    value,
  )
}

///|
let d_glProgramUniformHandleui64NV : Dispatch = Dispatch::new(
  "glProgramUniformHandleui64NV",
)

///|
extern "c" fn epoxy_glProgramUniformHandleui64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glProgramUniformHandleui64NV"

///|
pub fn gl_program_uniform_handleui64_nv(
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit {
  epoxy_glProgramUniformHandleui64NV(
    d_glProgramUniformHandleui64NV.get(),
    program,
    location,
    value,
  )
}

///|
let d_glProgramUniformHandleui64vARB : Dispatch = Dispatch::with_aliases(
  "glProgramUniformHandleui64vARB",
  ["glProgramUniformHandleui64vIMG"],
)

///|
#borrow(values)
extern "c" fn epoxy_glProgramUniformHandleui64vARB(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  values : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniformHandleui64vARB"

///|
pub fn gl_program_uniform_handleui64v_arb(
  program : UInt,
  location : Int,
  count : Int,
  values : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniformHandleui64vARB(
    d_glProgramUniformHandleui64vARB.get(),
    program,
    location,
    count,
    values,
  )
}

///|
let d_glProgramUniformHandleui64vIMG : Dispatch = Dispatch::with_aliases(
  "glProgramUniformHandleui64vIMG",
  ["glProgramUniformHandleui64vARB"],
)

///|
#borrow(values)
extern "c" fn epoxy_glProgramUniformHandleui64vIMG(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  values : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniformHandleui64vIMG"

///|
pub fn gl_program_uniform_handleui64v_img(
  program : UInt,
  location : Int,
  count : Int,
  values : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniformHandleui64vIMG(
    d_glProgramUniformHandleui64vIMG.get(),
    program,
    location,
    count,
    values,
  )
}

///|
let d_glProgramUniformHandleui64vNV : Dispatch = Dispatch::new(
  "glProgramUniformHandleui64vNV",
)

///|
#borrow(values)
extern "c" fn epoxy_glProgramUniformHandleui64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  values : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniformHandleui64vNV"

///|
pub fn gl_program_uniform_handleui64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  values : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniformHandleui64vNV(
    d_glProgramUniformHandleui64vNV.get(),
    program,
    location,
    count,
    values,
  )
}

///|
let d_glProgramUniformMatrix2dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix2dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix2dv"

///|
pub fn gl_program_uniform_matrix2dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix2dv(
    d_glProgramUniformMatrix2dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix2dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix2dvEXT"

///|
pub fn gl_program_uniform_matrix2dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix2dvEXT(
    d_glProgramUniformMatrix2dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix2fv",
  ["glProgramUniformMatrix2fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix2fv"

///|
pub fn gl_program_uniform_matrix2fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix2fv(
    d_glProgramUniformMatrix2fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix2fvEXT",
  ["glProgramUniformMatrix2fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix2fvEXT"

///|
pub fn gl_program_uniform_matrix2fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix2fvEXT(
    d_glProgramUniformMatrix2fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x3dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix2x3dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x3dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix2x3dv"

///|
pub fn gl_program_uniform_matrix2x3dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix2x3dv(
    d_glProgramUniformMatrix2x3dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x3dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix2x3dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x3dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix2x3dvEXT"

///|
pub fn gl_program_uniform_matrix2x3dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix2x3dvEXT(
    d_glProgramUniformMatrix2x3dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x3fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix2x3fv",
  ["glProgramUniformMatrix2x3fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x3fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix2x3fv"

///|
pub fn gl_program_uniform_matrix2x3fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix2x3fv(
    d_glProgramUniformMatrix2x3fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x3fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix2x3fvEXT",
  ["glProgramUniformMatrix2x3fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x3fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix2x3fvEXT"

///|
pub fn gl_program_uniform_matrix2x3fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix2x3fvEXT(
    d_glProgramUniformMatrix2x3fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x4dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix2x4dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x4dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix2x4dv"

///|
pub fn gl_program_uniform_matrix2x4dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix2x4dv(
    d_glProgramUniformMatrix2x4dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x4dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix2x4dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x4dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix2x4dvEXT"

///|
pub fn gl_program_uniform_matrix2x4dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix2x4dvEXT(
    d_glProgramUniformMatrix2x4dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x4fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix2x4fv",
  ["glProgramUniformMatrix2x4fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x4fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix2x4fv"

///|
pub fn gl_program_uniform_matrix2x4fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix2x4fv(
    d_glProgramUniformMatrix2x4fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix2x4fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix2x4fvEXT",
  ["glProgramUniformMatrix2x4fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix2x4fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix2x4fvEXT"

///|
pub fn gl_program_uniform_matrix2x4fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix2x4fvEXT(
    d_glProgramUniformMatrix2x4fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix3dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix3dv"

///|
pub fn gl_program_uniform_matrix3dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix3dv(
    d_glProgramUniformMatrix3dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix3dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix3dvEXT"

///|
pub fn gl_program_uniform_matrix3dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix3dvEXT(
    d_glProgramUniformMatrix3dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix3fv",
  ["glProgramUniformMatrix3fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix3fv"

///|
pub fn gl_program_uniform_matrix3fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix3fv(
    d_glProgramUniformMatrix3fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix3fvEXT",
  ["glProgramUniformMatrix3fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix3fvEXT"

///|
pub fn gl_program_uniform_matrix3fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix3fvEXT(
    d_glProgramUniformMatrix3fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x2dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix3x2dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x2dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix3x2dv"

///|
pub fn gl_program_uniform_matrix3x2dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix3x2dv(
    d_glProgramUniformMatrix3x2dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x2dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix3x2dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x2dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix3x2dvEXT"

///|
pub fn gl_program_uniform_matrix3x2dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix3x2dvEXT(
    d_glProgramUniformMatrix3x2dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x2fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix3x2fv",
  ["glProgramUniformMatrix3x2fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x2fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix3x2fv"

///|
pub fn gl_program_uniform_matrix3x2fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix3x2fv(
    d_glProgramUniformMatrix3x2fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x2fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix3x2fvEXT",
  ["glProgramUniformMatrix3x2fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x2fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix3x2fvEXT"

///|
pub fn gl_program_uniform_matrix3x2fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix3x2fvEXT(
    d_glProgramUniformMatrix3x2fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x4dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix3x4dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x4dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix3x4dv"

///|
pub fn gl_program_uniform_matrix3x4dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix3x4dv(
    d_glProgramUniformMatrix3x4dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x4dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix3x4dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x4dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix3x4dvEXT"

///|
pub fn gl_program_uniform_matrix3x4dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix3x4dvEXT(
    d_glProgramUniformMatrix3x4dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x4fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix3x4fv",
  ["glProgramUniformMatrix3x4fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x4fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix3x4fv"

///|
pub fn gl_program_uniform_matrix3x4fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix3x4fv(
    d_glProgramUniformMatrix3x4fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix3x4fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix3x4fvEXT",
  ["glProgramUniformMatrix3x4fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix3x4fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix3x4fvEXT"

///|
pub fn gl_program_uniform_matrix3x4fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix3x4fvEXT(
    d_glProgramUniformMatrix3x4fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix4dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix4dv"

///|
pub fn gl_program_uniform_matrix4dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix4dv(
    d_glProgramUniformMatrix4dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix4dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix4dvEXT"

///|
pub fn gl_program_uniform_matrix4dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix4dvEXT(
    d_glProgramUniformMatrix4dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix4fv",
  ["glProgramUniformMatrix4fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix4fv"

///|
pub fn gl_program_uniform_matrix4fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix4fv(
    d_glProgramUniformMatrix4fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix4fvEXT",
  ["glProgramUniformMatrix4fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix4fvEXT"

///|
pub fn gl_program_uniform_matrix4fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix4fvEXT(
    d_glProgramUniformMatrix4fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x2dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix4x2dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x2dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix4x2dv"

///|
pub fn gl_program_uniform_matrix4x2dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix4x2dv(
    d_glProgramUniformMatrix4x2dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x2dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix4x2dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x2dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix4x2dvEXT"

///|
pub fn gl_program_uniform_matrix4x2dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix4x2dvEXT(
    d_glProgramUniformMatrix4x2dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x2fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix4x2fv",
  ["glProgramUniformMatrix4x2fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x2fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix4x2fv"

///|
pub fn gl_program_uniform_matrix4x2fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix4x2fv(
    d_glProgramUniformMatrix4x2fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x2fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix4x2fvEXT",
  ["glProgramUniformMatrix4x2fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x2fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix4x2fvEXT"

///|
pub fn gl_program_uniform_matrix4x2fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix4x2fvEXT(
    d_glProgramUniformMatrix4x2fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x3dv : Dispatch = Dispatch::new(
  "glProgramUniformMatrix4x3dv",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x3dv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix4x3dv"

///|
pub fn gl_program_uniform_matrix4x3dv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix4x3dv(
    d_glProgramUniformMatrix4x3dv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x3dvEXT : Dispatch = Dispatch::new(
  "glProgramUniformMatrix4x3dvEXT",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x3dvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glProgramUniformMatrix4x3dvEXT"

///|
pub fn gl_program_uniform_matrix4x3dv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glProgramUniformMatrix4x3dvEXT(
    d_glProgramUniformMatrix4x3dvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x3fv : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix4x3fv",
  ["glProgramUniformMatrix4x3fvEXT"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x3fv(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix4x3fv"

///|
pub fn gl_program_uniform_matrix4x3fv(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix4x3fv(
    d_glProgramUniformMatrix4x3fv.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformMatrix4x3fvEXT : Dispatch = Dispatch::with_aliases(
  "glProgramUniformMatrix4x3fvEXT",
  ["glProgramUniformMatrix4x3fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformMatrix4x3fvEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glProgramUniformMatrix4x3fvEXT"

///|
pub fn gl_program_uniform_matrix4x3fv_ext(
  program : UInt,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glProgramUniformMatrix4x3fvEXT(
    d_glProgramUniformMatrix4x3fvEXT.get(),
    program,
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glProgramUniformui64NV : Dispatch = Dispatch::new(
  "glProgramUniformui64NV",
)

///|
extern "c" fn epoxy_glProgramUniformui64NV(
  fp : CPtr,
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glProgramUniformui64NV"

///|
pub fn gl_program_uniformui64_nv(
  program : UInt,
  location : Int,
  value : UInt64,
) -> Unit {
  epoxy_glProgramUniformui64NV(
    d_glProgramUniformui64NV.get(),
    program,
    location,
    value,
  )
}

///|
let d_glProgramUniformui64vNV : Dispatch = Dispatch::new(
  "glProgramUniformui64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glProgramUniformui64vNV(
  fp : CPtr,
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glProgramUniformui64vNV"

///|
pub fn gl_program_uniformui64v_nv(
  program : UInt,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glProgramUniformui64vNV(
    d_glProgramUniformui64vNV.get(),
    program,
    location,
    count,
    value,
  )
}

///|
let d_glProgramVertexLimitNV : Dispatch = Dispatch::new(
  "glProgramVertexLimitNV",
)

///|
extern "c" fn epoxy_glProgramVertexLimitNV(
  fp : CPtr,
  target : UInt,
  limit : Int,
) -> Unit = "epoxy_glProgramVertexLimitNV"

///|
pub fn gl_program_vertex_limit_nv(target : UInt, limit : Int) -> Unit {
  epoxy_glProgramVertexLimitNV(d_glProgramVertexLimitNV.get(), target, limit)
}

///|
let d_glProvokingVertex : Dispatch = Dispatch::with_aliases(
  "glProvokingVertex",
  ["glProvokingVertexEXT"],
)

///|
extern "c" fn epoxy_glProvokingVertex(fp : CPtr, mode : UInt) -> Unit = "epoxy_glProvokingVertex"

///|
pub fn gl_provoking_vertex(mode : UInt) -> Unit {
  epoxy_glProvokingVertex(d_glProvokingVertex.get(), mode)
}

///|
let d_glProvokingVertexEXT : Dispatch = Dispatch::with_aliases(
  "glProvokingVertexEXT",
  ["glProvokingVertex"],
)

///|
extern "c" fn epoxy_glProvokingVertexEXT(fp : CPtr, mode : UInt) -> Unit = "epoxy_glProvokingVertexEXT"

///|
pub fn gl_provoking_vertex_ext(mode : UInt) -> Unit {
  epoxy_glProvokingVertexEXT(d_glProvokingVertexEXT.get(), mode)
}

///|
let d_glPushAttrib : Dispatch = Dispatch::new("glPushAttrib")

///|
extern "c" fn epoxy_glPushAttrib(fp : CPtr, mask : UInt) -> Unit = "epoxy_glPushAttrib"

///|
pub fn gl_push_attrib(mask : UInt) -> Unit {
  epoxy_glPushAttrib(d_glPushAttrib.get(), mask)
}

///|
let d_glPushClientAttrib : Dispatch = Dispatch::new("glPushClientAttrib")

///|
extern "c" fn epoxy_glPushClientAttrib(fp : CPtr, mask : UInt) -> Unit = "epoxy_glPushClientAttrib"

///|
pub fn gl_push_client_attrib(mask : UInt) -> Unit {
  epoxy_glPushClientAttrib(d_glPushClientAttrib.get(), mask)
}

///|
let d_glPushClientAttribDefaultEXT : Dispatch = Dispatch::new(
  "glPushClientAttribDefaultEXT",
)

///|
extern "c" fn epoxy_glPushClientAttribDefaultEXT(
  fp : CPtr,
  mask : UInt,
) -> Unit = "epoxy_glPushClientAttribDefaultEXT"

///|
pub fn gl_push_client_attrib_default_ext(mask : UInt) -> Unit {
  epoxy_glPushClientAttribDefaultEXT(d_glPushClientAttribDefaultEXT.get(), mask)
}

///|
let d_glPushDebugGroup : Dispatch = Dispatch::with_aliases("glPushDebugGroup", [
  "glPushDebugGroupKHR",
])

///|
#borrow(message)
extern "c" fn epoxy_glPushDebugGroup(
  fp : CPtr,
  source : UInt,
  id : UInt,
  length : Int,
  message : Bytes,
) -> Unit = "epoxy_glPushDebugGroup"

///|
pub fn gl_push_debug_group(
  source : UInt,
  id : UInt,
  length : Int,
  message : Bytes,
) -> Unit {
  epoxy_glPushDebugGroup(d_glPushDebugGroup.get(), source, id, length, message)
}

///|
let d_glPushDebugGroupKHR : Dispatch = Dispatch::with_aliases(
  "glPushDebugGroupKHR",
  ["glPushDebugGroup"],
)

///|
#borrow(message)
extern "c" fn epoxy_glPushDebugGroupKHR(
  fp : CPtr,
  source : UInt,
  id : UInt,
  length : Int,
  message : Bytes,
) -> Unit = "epoxy_glPushDebugGroupKHR"

///|
pub fn gl_push_debug_group_khr(
  source : UInt,
  id : UInt,
  length : Int,
  message : Bytes,
) -> Unit {
  epoxy_glPushDebugGroupKHR(
    d_glPushDebugGroupKHR.get(),
    source,
    id,
    length,
    message,
  )
}

///|
let d_glPushGroupMarkerEXT : Dispatch = Dispatch::new("glPushGroupMarkerEXT")

///|
#borrow(marker)
extern "c" fn epoxy_glPushGroupMarkerEXT(
  fp : CPtr,
  length : Int,
  marker : Bytes,
) -> Unit = "epoxy_glPushGroupMarkerEXT"

///|
pub fn gl_push_group_marker_ext(length : Int, marker : Bytes) -> Unit {
  epoxy_glPushGroupMarkerEXT(d_glPushGroupMarkerEXT.get(), length, marker)
}

///|
let d_glPushMatrix : Dispatch = Dispatch::new("glPushMatrix")

///|
extern "c" fn epoxy_glPushMatrix(fp : CPtr) -> Unit = "epoxy_glPushMatrix"

///|
pub fn gl_push_matrix() -> Unit {
  epoxy_glPushMatrix(d_glPushMatrix.get())
}

///|
let d_glPushName : Dispatch = Dispatch::new("glPushName")

///|
extern "c" fn epoxy_glPushName(fp : CPtr, name : UInt) -> Unit = "epoxy_glPushName"

///|
pub fn gl_push_name(name : UInt) -> Unit {
  epoxy_glPushName(d_glPushName.get(), name)
}

///|
let d_glQueryCounter : Dispatch = Dispatch::with_aliases("glQueryCounter", [
  "glQueryCounterEXT",
])

///|
extern "c" fn epoxy_glQueryCounter(fp : CPtr, id : UInt, target : UInt) -> Unit = "epoxy_glQueryCounter"

///|
pub fn gl_query_counter(id : UInt, target : UInt) -> Unit {
  epoxy_glQueryCounter(d_glQueryCounter.get(), id, target)
}

///|
let d_glQueryCounterEXT : Dispatch = Dispatch::with_aliases(
  "glQueryCounterEXT",
  ["glQueryCounter"],
)

///|
extern "c" fn epoxy_glQueryCounterEXT(
  fp : CPtr,
  id : UInt,
  target : UInt,
) -> Unit = "epoxy_glQueryCounterEXT"

///|
pub fn gl_query_counter_ext(id : UInt, target : UInt) -> Unit {
  epoxy_glQueryCounterEXT(d_glQueryCounterEXT.get(), id, target)
}

///|
let d_glQueryMatrixxOES : Dispatch = Dispatch::new("glQueryMatrixxOES")

///|
#borrow(mantissa, exponent)
extern "c" fn epoxy_glQueryMatrixxOES(
  fp : CPtr,
  mantissa : FixedArray[Int],
  exponent : FixedArray[Int],
) -> UInt = "epoxy_glQueryMatrixxOES"

///|
pub fn gl_query_matrixx_oes(
  mantissa : FixedArray[Int],
  exponent : FixedArray[Int],
) -> UInt {
  epoxy_glQueryMatrixxOES(d_glQueryMatrixxOES.get(), mantissa, exponent)
}

///|
let d_glQueryObjectParameteruiAMD : Dispatch = Dispatch::new(
  "glQueryObjectParameteruiAMD",
)

///|
extern "c" fn epoxy_glQueryObjectParameteruiAMD(
  fp : CPtr,
  target : UInt,
  id : UInt,
  pname : UInt,
  param : UInt,
) -> Unit = "epoxy_glQueryObjectParameteruiAMD"

///|
pub fn gl_query_object_parameterui_amd(
  target : UInt,
  id : UInt,
  pname : UInt,
  param : UInt,
) -> Unit {
  epoxy_glQueryObjectParameteruiAMD(
    d_glQueryObjectParameteruiAMD.get(),
    target,
    id,
    pname,
    param,
  )
}

///|
let d_glQueryResourceNV : Dispatch = Dispatch::new("glQueryResourceNV")

///|
#borrow(buffer)
extern "c" fn epoxy_glQueryResourceNV(
  fp : CPtr,
  queryType : UInt,
  tagId : Int,
  count : UInt,
  buffer : FixedArray[Int],
) -> Int = "epoxy_glQueryResourceNV"

///|
pub fn gl_query_resource_nv(
  queryType : UInt,
  tagId : Int,
  count : UInt,
  buffer : FixedArray[Int],
) -> Int {
  epoxy_glQueryResourceNV(
    d_glQueryResourceNV.get(),
    queryType,
    tagId,
    count,
    buffer,
  )
}

///|
let d_glQueryResourceTagNV : Dispatch = Dispatch::new("glQueryResourceTagNV")

///|
#borrow(tagString)
extern "c" fn epoxy_glQueryResourceTagNV(
  fp : CPtr,
  tagId : Int,
  tagString : Bytes,
) -> Unit = "epoxy_glQueryResourceTagNV"

///|
pub fn gl_query_resource_tag_nv(tagId : Int, tagString : Bytes) -> Unit {
  epoxy_glQueryResourceTagNV(d_glQueryResourceTagNV.get(), tagId, tagString)
}

///|
let d_glRasterPos2d : Dispatch = Dispatch::new("glRasterPos2d")

///|
extern "c" fn epoxy_glRasterPos2d(fp : CPtr, x : Double, y : Double) -> Unit = "epoxy_glRasterPos2d"

///|
pub fn gl_raster_pos2d(x : Double, y : Double) -> Unit {
  epoxy_glRasterPos2d(d_glRasterPos2d.get(), x, y)
}

///|
let d_glRasterPos2dv : Dispatch = Dispatch::new("glRasterPos2dv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos2dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glRasterPos2dv"

///|
pub fn gl_raster_pos2dv(v : FixedArray[Double]) -> Unit {
  epoxy_glRasterPos2dv(d_glRasterPos2dv.get(), v)
}

///|
let d_glRasterPos2f : Dispatch = Dispatch::new("glRasterPos2f")

///|
extern "c" fn epoxy_glRasterPos2f(fp : CPtr, x : Float, y : Float) -> Unit = "epoxy_glRasterPos2f"

///|
pub fn gl_raster_pos2f(x : Float, y : Float) -> Unit {
  epoxy_glRasterPos2f(d_glRasterPos2f.get(), x, y)
}

///|
let d_glRasterPos2fv : Dispatch = Dispatch::new("glRasterPos2fv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos2fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glRasterPos2fv"

///|
pub fn gl_raster_pos2fv(v : FixedArray[Float]) -> Unit {
  epoxy_glRasterPos2fv(d_glRasterPos2fv.get(), v)
}

///|
let d_glRasterPos2i : Dispatch = Dispatch::new("glRasterPos2i")

///|
extern "c" fn epoxy_glRasterPos2i(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glRasterPos2i"

///|
pub fn gl_raster_pos2i(x : Int, y : Int) -> Unit {
  epoxy_glRasterPos2i(d_glRasterPos2i.get(), x, y)
}

///|
let d_glRasterPos2iv : Dispatch = Dispatch::new("glRasterPos2iv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos2iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glRasterPos2iv"

///|
pub fn gl_raster_pos2iv(v : FixedArray[Int]) -> Unit {
  epoxy_glRasterPos2iv(d_glRasterPos2iv.get(), v)
}

///|
let d_glRasterPos2s : Dispatch = Dispatch::new("glRasterPos2s")

///|
extern "c" fn epoxy_glRasterPos2s(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glRasterPos2s"

///|
pub fn gl_raster_pos2s(x : Int, y : Int) -> Unit {
  epoxy_glRasterPos2s(d_glRasterPos2s.get(), x, y)
}

///|
let d_glRasterPos2sv : Dispatch = Dispatch::new("glRasterPos2sv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos2sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glRasterPos2sv"

///|
pub fn gl_raster_pos2sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glRasterPos2sv(d_glRasterPos2sv.get(), v)
}

///|
let d_glRasterPos2xOES : Dispatch = Dispatch::new("glRasterPos2xOES")

///|
extern "c" fn epoxy_glRasterPos2xOES(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glRasterPos2xOES"

///|
pub fn gl_raster_pos2x_oes(x : Int, y : Int) -> Unit {
  epoxy_glRasterPos2xOES(d_glRasterPos2xOES.get(), x, y)
}

///|
let d_glRasterPos2xvOES : Dispatch = Dispatch::new("glRasterPos2xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glRasterPos2xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glRasterPos2xvOES"

///|
pub fn gl_raster_pos2xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glRasterPos2xvOES(d_glRasterPos2xvOES.get(), coords)
}

///|
let d_glRasterPos3d : Dispatch = Dispatch::new("glRasterPos3d")

///|
extern "c" fn epoxy_glRasterPos3d(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glRasterPos3d"

///|
pub fn gl_raster_pos3d(x : Double, y : Double, z : Double) -> Unit {
  epoxy_glRasterPos3d(d_glRasterPos3d.get(), x, y, z)
}

///|
let d_glRasterPos3dv : Dispatch = Dispatch::new("glRasterPos3dv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos3dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glRasterPos3dv"

///|
pub fn gl_raster_pos3dv(v : FixedArray[Double]) -> Unit {
  epoxy_glRasterPos3dv(d_glRasterPos3dv.get(), v)
}

///|
let d_glRasterPos3f : Dispatch = Dispatch::new("glRasterPos3f")

///|
extern "c" fn epoxy_glRasterPos3f(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glRasterPos3f"

///|
pub fn gl_raster_pos3f(x : Float, y : Float, z : Float) -> Unit {
  epoxy_glRasterPos3f(d_glRasterPos3f.get(), x, y, z)
}

///|
let d_glRasterPos3fv : Dispatch = Dispatch::new("glRasterPos3fv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos3fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glRasterPos3fv"

///|
pub fn gl_raster_pos3fv(v : FixedArray[Float]) -> Unit {
  epoxy_glRasterPos3fv(d_glRasterPos3fv.get(), v)
}

///|
let d_glRasterPos3i : Dispatch = Dispatch::new("glRasterPos3i")

///|
extern "c" fn epoxy_glRasterPos3i(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glRasterPos3i"

///|
pub fn gl_raster_pos3i(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glRasterPos3i(d_glRasterPos3i.get(), x, y, z)
}

///|
let d_glRasterPos3iv : Dispatch = Dispatch::new("glRasterPos3iv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos3iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glRasterPos3iv"

///|
pub fn gl_raster_pos3iv(v : FixedArray[Int]) -> Unit {
  epoxy_glRasterPos3iv(d_glRasterPos3iv.get(), v)
}

///|
let d_glRasterPos3s : Dispatch = Dispatch::new("glRasterPos3s")

///|
extern "c" fn epoxy_glRasterPos3s(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glRasterPos3s"

///|
pub fn gl_raster_pos3s(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glRasterPos3s(d_glRasterPos3s.get(), x, y, z)
}

///|
let d_glRasterPos3sv : Dispatch = Dispatch::new("glRasterPos3sv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos3sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glRasterPos3sv"

///|
pub fn gl_raster_pos3sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glRasterPos3sv(d_glRasterPos3sv.get(), v)
}

///|
let d_glRasterPos3xOES : Dispatch = Dispatch::new("glRasterPos3xOES")

///|
extern "c" fn epoxy_glRasterPos3xOES(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glRasterPos3xOES"

///|
pub fn gl_raster_pos3x_oes(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glRasterPos3xOES(d_glRasterPos3xOES.get(), x, y, z)
}

///|
let d_glRasterPos3xvOES : Dispatch = Dispatch::new("glRasterPos3xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glRasterPos3xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glRasterPos3xvOES"

///|
pub fn gl_raster_pos3xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glRasterPos3xvOES(d_glRasterPos3xvOES.get(), coords)
}

///|
let d_glRasterPos4d : Dispatch = Dispatch::new("glRasterPos4d")

///|
extern "c" fn epoxy_glRasterPos4d(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glRasterPos4d"

///|
pub fn gl_raster_pos4d(x : Double, y : Double, z : Double, w : Double) -> Unit {
  epoxy_glRasterPos4d(d_glRasterPos4d.get(), x, y, z, w)
}

///|
let d_glRasterPos4dv : Dispatch = Dispatch::new("glRasterPos4dv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos4dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glRasterPos4dv"

///|
pub fn gl_raster_pos4dv(v : FixedArray[Double]) -> Unit {
  epoxy_glRasterPos4dv(d_glRasterPos4dv.get(), v)
}

///|
let d_glRasterPos4f : Dispatch = Dispatch::new("glRasterPos4f")

///|
extern "c" fn epoxy_glRasterPos4f(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glRasterPos4f"

///|
pub fn gl_raster_pos4f(x : Float, y : Float, z : Float, w : Float) -> Unit {
  epoxy_glRasterPos4f(d_glRasterPos4f.get(), x, y, z, w)
}

///|
let d_glRasterPos4fv : Dispatch = Dispatch::new("glRasterPos4fv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos4fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glRasterPos4fv"

///|
pub fn gl_raster_pos4fv(v : FixedArray[Float]) -> Unit {
  epoxy_glRasterPos4fv(d_glRasterPos4fv.get(), v)
}

///|
let d_glRasterPos4i : Dispatch = Dispatch::new("glRasterPos4i")

///|
extern "c" fn epoxy_glRasterPos4i(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glRasterPos4i"

///|
pub fn gl_raster_pos4i(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glRasterPos4i(d_glRasterPos4i.get(), x, y, z, w)
}

///|
let d_glRasterPos4iv : Dispatch = Dispatch::new("glRasterPos4iv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos4iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glRasterPos4iv"

///|
pub fn gl_raster_pos4iv(v : FixedArray[Int]) -> Unit {
  epoxy_glRasterPos4iv(d_glRasterPos4iv.get(), v)
}

///|
let d_glRasterPos4s : Dispatch = Dispatch::new("glRasterPos4s")

///|
extern "c" fn epoxy_glRasterPos4s(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glRasterPos4s"

///|
pub fn gl_raster_pos4s(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glRasterPos4s(d_glRasterPos4s.get(), x, y, z, w)
}

///|
let d_glRasterPos4sv : Dispatch = Dispatch::new("glRasterPos4sv")

///|
#borrow(v)
extern "c" fn epoxy_glRasterPos4sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glRasterPos4sv"

///|
pub fn gl_raster_pos4sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glRasterPos4sv(d_glRasterPos4sv.get(), v)
}

///|
let d_glRasterPos4xOES : Dispatch = Dispatch::new("glRasterPos4xOES")

///|
extern "c" fn epoxy_glRasterPos4xOES(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glRasterPos4xOES"

///|
pub fn gl_raster_pos4x_oes(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glRasterPos4xOES(d_glRasterPos4xOES.get(), x, y, z, w)
}

///|
let d_glRasterPos4xvOES : Dispatch = Dispatch::new("glRasterPos4xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glRasterPos4xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glRasterPos4xvOES"

///|
pub fn gl_raster_pos4xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glRasterPos4xvOES(d_glRasterPos4xvOES.get(), coords)
}

///|
let d_glRasterSamplesEXT : Dispatch = Dispatch::new("glRasterSamplesEXT")

///|
extern "c" fn epoxy_glRasterSamplesEXT(
  fp : CPtr,
  samples : UInt,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glRasterSamplesEXT"

///|
pub fn gl_raster_samples_ext(
  samples : UInt,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glRasterSamplesEXT(
    d_glRasterSamplesEXT.get(),
    samples,
    fixedsamplelocations,
  )
}

///|
let d_glReadBuffer : Dispatch = Dispatch::new("glReadBuffer")

///|
extern "c" fn epoxy_glReadBuffer(fp : CPtr, src : UInt) -> Unit = "epoxy_glReadBuffer"

///|
pub fn gl_read_buffer(src : UInt) -> Unit {
  epoxy_glReadBuffer(d_glReadBuffer.get(), src)
}

///|
let d_glReadBufferIndexedEXT : Dispatch = Dispatch::new(
  "glReadBufferIndexedEXT",
)

///|
extern "c" fn epoxy_glReadBufferIndexedEXT(
  fp : CPtr,
  src : UInt,
  index : Int,
) -> Unit = "epoxy_glReadBufferIndexedEXT"

///|
pub fn gl_read_buffer_indexed_ext(src : UInt, index : Int) -> Unit {
  epoxy_glReadBufferIndexedEXT(d_glReadBufferIndexedEXT.get(), src, index)
}

///|
let d_glReadBufferNV : Dispatch = Dispatch::new("glReadBufferNV")

///|
extern "c" fn epoxy_glReadBufferNV(fp : CPtr, mode : UInt) -> Unit = "epoxy_glReadBufferNV"

///|
pub fn gl_read_buffer_nv(mode : UInt) -> Unit {
  epoxy_glReadBufferNV(d_glReadBufferNV.get(), mode)
}

///|
let d_glReadInstrumentsSGIX : Dispatch = Dispatch::new("glReadInstrumentsSGIX")

///|
extern "c" fn epoxy_glReadInstrumentsSGIX(fp : CPtr, marker : Int) -> Unit = "epoxy_glReadInstrumentsSGIX"

///|
pub fn gl_read_instruments_sgix(marker : Int) -> Unit {
  epoxy_glReadInstrumentsSGIX(d_glReadInstrumentsSGIX.get(), marker)
}

///|
let d_glReadPixels : Dispatch = Dispatch::new("glReadPixels")

///|
#borrow(pixels)
extern "c" fn epoxy_glReadPixels(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glReadPixels"

///|
pub fn gl_read_pixels(
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glReadPixels(
    d_glReadPixels.get(),
    x,
    y,
    width,
    height,
    format,
    type_,
    pixels,
  )
}

///|
let d_glReadnPixels : Dispatch = Dispatch::with_aliases("glReadnPixels", [
  "glReadnPixelsARB", "glReadnPixelsEXT", "glReadnPixelsKHR",
])

///|
#borrow(data)
extern "c" fn epoxy_glReadnPixels(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glReadnPixels"

///|
pub fn gl_readn_pixels(
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glReadnPixels(
    d_glReadnPixels.get(),
    x,
    y,
    width,
    height,
    format,
    type_,
    bufSize,
    data,
  )
}

///|
let d_glReadnPixelsARB : Dispatch = Dispatch::with_aliases("glReadnPixelsARB", [
  "glReadnPixels", "glReadnPixelsEXT", "glReadnPixelsKHR",
])

///|
#borrow(data)
extern "c" fn epoxy_glReadnPixelsARB(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glReadnPixelsARB"

///|
pub fn gl_readn_pixels_arb(
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glReadnPixelsARB(
    d_glReadnPixelsARB.get(),
    x,
    y,
    width,
    height,
    format,
    type_,
    bufSize,
    data,
  )
}

///|
let d_glReadnPixelsEXT : Dispatch = Dispatch::with_aliases("glReadnPixelsEXT", [
  "glReadnPixels", "glReadnPixelsARB", "glReadnPixelsKHR",
])

///|
#borrow(data)
extern "c" fn epoxy_glReadnPixelsEXT(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glReadnPixelsEXT"

///|
pub fn gl_readn_pixels_ext(
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glReadnPixelsEXT(
    d_glReadnPixelsEXT.get(),
    x,
    y,
    width,
    height,
    format,
    type_,
    bufSize,
    data,
  )
}

///|
let d_glReadnPixelsKHR : Dispatch = Dispatch::with_aliases("glReadnPixelsKHR", [
  "glReadnPixels", "glReadnPixelsARB", "glReadnPixelsEXT",
])

///|
#borrow(data)
extern "c" fn epoxy_glReadnPixelsKHR(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit = "epoxy_glReadnPixelsKHR"

///|
pub fn gl_readn_pixels_khr(
  x : Int,
  y : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  bufSize : Int,
  data : Bytes,
) -> Unit {
  epoxy_glReadnPixelsKHR(
    d_glReadnPixelsKHR.get(),
    x,
    y,
    width,
    height,
    format,
    type_,
    bufSize,
    data,
  )
}

///|
let d_glReleaseKeyedMutexWin32EXT : Dispatch = Dispatch::new(
  "glReleaseKeyedMutexWin32EXT",
)

///|
extern "c" fn epoxy_glReleaseKeyedMutexWin32EXT(
  fp : CPtr,
  memory : UInt,
  key : UInt64,
) -> Bool = "epoxy_glReleaseKeyedMutexWin32EXT"

///|
pub fn gl_release_keyed_mutex_win32_ext(memory : UInt, key : UInt64) -> Bool {
  epoxy_glReleaseKeyedMutexWin32EXT(
    d_glReleaseKeyedMutexWin32EXT.get(),
    memory,
    key,
  )
}

///|
let d_glRectd : Dispatch = Dispatch::new("glRectd")

///|
extern "c" fn epoxy_glRectd(
  fp : CPtr,
  x1 : Double,
  y1 : Double,
  x2 : Double,
  y2 : Double,
) -> Unit = "epoxy_glRectd"

///|
pub fn gl_rectd(x1 : Double, y1 : Double, x2 : Double, y2 : Double) -> Unit {
  epoxy_glRectd(d_glRectd.get(), x1, y1, x2, y2)
}

///|
let d_glRectdv : Dispatch = Dispatch::new("glRectdv")

///|
#borrow(v1, v2)
extern "c" fn epoxy_glRectdv(
  fp : CPtr,
  v1 : FixedArray[Double],
  v2 : FixedArray[Double],
) -> Unit = "epoxy_glRectdv"

///|
pub fn gl_rectdv(v1 : FixedArray[Double], v2 : FixedArray[Double]) -> Unit {
  epoxy_glRectdv(d_glRectdv.get(), v1, v2)
}

///|
let d_glRectf : Dispatch = Dispatch::new("glRectf")

///|
extern "c" fn epoxy_glRectf(
  fp : CPtr,
  x1 : Float,
  y1 : Float,
  x2 : Float,
  y2 : Float,
) -> Unit = "epoxy_glRectf"

///|
pub fn gl_rectf(x1 : Float, y1 : Float, x2 : Float, y2 : Float) -> Unit {
  epoxy_glRectf(d_glRectf.get(), x1, y1, x2, y2)
}

///|
let d_glRectfv : Dispatch = Dispatch::new("glRectfv")

///|
#borrow(v1, v2)
extern "c" fn epoxy_glRectfv(
  fp : CPtr,
  v1 : FixedArray[Float],
  v2 : FixedArray[Float],
) -> Unit = "epoxy_glRectfv"

///|
pub fn gl_rectfv(v1 : FixedArray[Float], v2 : FixedArray[Float]) -> Unit {
  epoxy_glRectfv(d_glRectfv.get(), v1, v2)
}

///|
let d_glRecti : Dispatch = Dispatch::new("glRecti")

///|
extern "c" fn epoxy_glRecti(
  fp : CPtr,
  x1 : Int,
  y1 : Int,
  x2 : Int,
  y2 : Int,
) -> Unit = "epoxy_glRecti"

///|
pub fn gl_recti(x1 : Int, y1 : Int, x2 : Int, y2 : Int) -> Unit {
  epoxy_glRecti(d_glRecti.get(), x1, y1, x2, y2)
}

///|
let d_glRectiv : Dispatch = Dispatch::new("glRectiv")

///|
#borrow(v1, v2)
extern "c" fn epoxy_glRectiv(
  fp : CPtr,
  v1 : FixedArray[Int],
  v2 : FixedArray[Int],
) -> Unit = "epoxy_glRectiv"

///|
pub fn gl_rectiv(v1 : FixedArray[Int], v2 : FixedArray[Int]) -> Unit {
  epoxy_glRectiv(d_glRectiv.get(), v1, v2)
}

///|
let d_glRects : Dispatch = Dispatch::new("glRects")

///|
extern "c" fn epoxy_glRects(
  fp : CPtr,
  x1 : Int,
  y1 : Int,
  x2 : Int,
  y2 : Int,
) -> Unit = "epoxy_glRects"

///|
pub fn gl_rects(x1 : Int, y1 : Int, x2 : Int, y2 : Int) -> Unit {
  epoxy_glRects(d_glRects.get(), x1, y1, x2, y2)
}

///|
let d_glRectsv : Dispatch = Dispatch::new("glRectsv")

///|
#borrow(v1, v2)
extern "c" fn epoxy_glRectsv(
  fp : CPtr,
  v1 : FixedArray[Int16],
  v2 : FixedArray[Int16],
) -> Unit = "epoxy_glRectsv"

///|
pub fn gl_rectsv(v1 : FixedArray[Int16], v2 : FixedArray[Int16]) -> Unit {
  epoxy_glRectsv(d_glRectsv.get(), v1, v2)
}

///|
let d_glRectxOES : Dispatch = Dispatch::new("glRectxOES")

///|
extern "c" fn epoxy_glRectxOES(
  fp : CPtr,
  x1 : Int,
  y1 : Int,
  x2 : Int,
  y2 : Int,
) -> Unit = "epoxy_glRectxOES"

///|
pub fn gl_rectx_oes(x1 : Int, y1 : Int, x2 : Int, y2 : Int) -> Unit {
  epoxy_glRectxOES(d_glRectxOES.get(), x1, y1, x2, y2)
}

///|
let d_glRectxvOES : Dispatch = Dispatch::new("glRectxvOES")

///|
#borrow(v1, v2)
extern "c" fn epoxy_glRectxvOES(
  fp : CPtr,
  v1 : FixedArray[Int],
  v2 : FixedArray[Int],
) -> Unit = "epoxy_glRectxvOES"

///|
pub fn gl_rectxv_oes(v1 : FixedArray[Int], v2 : FixedArray[Int]) -> Unit {
  epoxy_glRectxvOES(d_glRectxvOES.get(), v1, v2)
}

///|
let d_glReferencePlaneSGIX : Dispatch = Dispatch::new("glReferencePlaneSGIX")

///|
#borrow(equation)
extern "c" fn epoxy_glReferencePlaneSGIX(
  fp : CPtr,
  equation : FixedArray[Double],
) -> Unit = "epoxy_glReferencePlaneSGIX"

///|
pub fn gl_reference_plane_sgix(equation : FixedArray[Double]) -> Unit {
  epoxy_glReferencePlaneSGIX(d_glReferencePlaneSGIX.get(), equation)
}

///|
let d_glReleaseShaderCompiler : Dispatch = Dispatch::new(
  "glReleaseShaderCompiler",
)

///|
extern "c" fn epoxy_glReleaseShaderCompiler(fp : CPtr) -> Unit = "epoxy_glReleaseShaderCompiler"

///|
pub fn gl_release_shader_compiler() -> Unit {
  epoxy_glReleaseShaderCompiler(d_glReleaseShaderCompiler.get())
}

///|
let d_glRenderGpuMaskNV : Dispatch = Dispatch::new("glRenderGpuMaskNV")

///|
extern "c" fn epoxy_glRenderGpuMaskNV(fp : CPtr, mask : UInt) -> Unit = "epoxy_glRenderGpuMaskNV"

///|
pub fn gl_render_gpu_mask_nv(mask : UInt) -> Unit {
  epoxy_glRenderGpuMaskNV(d_glRenderGpuMaskNV.get(), mask)
}

///|
let d_glRenderMode : Dispatch = Dispatch::new("glRenderMode")

///|
extern "c" fn epoxy_glRenderMode(fp : CPtr, mode : UInt) -> Int = "epoxy_glRenderMode"

///|
pub fn gl_render_mode(mode : UInt) -> Int {
  epoxy_glRenderMode(d_glRenderMode.get(), mode)
}

///|
let d_glRenderbufferStorage : Dispatch = Dispatch::with_aliases(
  "glRenderbufferStorage",
  ["glRenderbufferStorageEXT"],
)

///|
extern "c" fn epoxy_glRenderbufferStorage(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorage"

///|
pub fn gl_renderbuffer_storage(
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorage(
    d_glRenderbufferStorage.get(),
    target,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageEXT : Dispatch = Dispatch::with_aliases(
  "glRenderbufferStorageEXT",
  ["glRenderbufferStorage"],
)

///|
extern "c" fn epoxy_glRenderbufferStorageEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageEXT"

///|
pub fn gl_renderbuffer_storage_ext(
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageEXT(
    d_glRenderbufferStorageEXT.get(),
    target,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisample : Dispatch = Dispatch::with_aliases(
  "glRenderbufferStorageMultisample",
  ["glRenderbufferStorageMultisampleEXT", "glRenderbufferStorageMultisampleNV"],
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisample(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisample"

///|
pub fn gl_renderbuffer_storage_multisample(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisample(
    d_glRenderbufferStorageMultisample.get(),
    target,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisampleANGLE : Dispatch = Dispatch::new(
  "glRenderbufferStorageMultisampleANGLE",
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisampleANGLE(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisampleANGLE"

///|
pub fn gl_renderbuffer_storage_multisample_angle(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisampleANGLE(
    d_glRenderbufferStorageMultisampleANGLE.get(),
    target,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisampleAPPLE : Dispatch = Dispatch::new(
  "glRenderbufferStorageMultisampleAPPLE",
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisampleAPPLE(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisampleAPPLE"

///|
pub fn gl_renderbuffer_storage_multisample_apple(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisampleAPPLE(
    d_glRenderbufferStorageMultisampleAPPLE.get(),
    target,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisampleAdvancedAMD : Dispatch = Dispatch::new(
  "glRenderbufferStorageMultisampleAdvancedAMD",
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisampleAdvancedAMD(
  fp : CPtr,
  target : UInt,
  samples : Int,
  storageSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisampleAdvancedAMD"

///|
pub fn gl_renderbuffer_storage_multisample_advanced_amd(
  target : UInt,
  samples : Int,
  storageSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisampleAdvancedAMD(
    d_glRenderbufferStorageMultisampleAdvancedAMD.get(),
    target,
    samples,
    storageSamples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisampleCoverageNV : Dispatch = Dispatch::new(
  "glRenderbufferStorageMultisampleCoverageNV",
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisampleCoverageNV(
  fp : CPtr,
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisampleCoverageNV"

///|
pub fn gl_renderbuffer_storage_multisample_coverage_nv(
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisampleCoverageNV(
    d_glRenderbufferStorageMultisampleCoverageNV.get(),
    target,
    coverageSamples,
    colorSamples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisampleEXT : Dispatch = Dispatch::with_aliases(
  "glRenderbufferStorageMultisampleEXT",
  ["glRenderbufferStorageMultisample", "glRenderbufferStorageMultisampleNV"],
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisampleEXT(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisampleEXT"

///|
pub fn gl_renderbuffer_storage_multisample_ext(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisampleEXT(
    d_glRenderbufferStorageMultisampleEXT.get(),
    target,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisampleIMG : Dispatch = Dispatch::new(
  "glRenderbufferStorageMultisampleIMG",
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisampleIMG(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisampleIMG"

///|
pub fn gl_renderbuffer_storage_multisample_img(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisampleIMG(
    d_glRenderbufferStorageMultisampleIMG.get(),
    target,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageMultisampleNV : Dispatch = Dispatch::with_aliases(
  "glRenderbufferStorageMultisampleNV",
  ["glRenderbufferStorageMultisample", "glRenderbufferStorageMultisampleEXT"],
)

///|
extern "c" fn epoxy_glRenderbufferStorageMultisampleNV(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageMultisampleNV"

///|
pub fn gl_renderbuffer_storage_multisample_nv(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageMultisampleNV(
    d_glRenderbufferStorageMultisampleNV.get(),
    target,
    samples,
    internalformat,
    width,
    height,
  )
}

///|
let d_glRenderbufferStorageOES : Dispatch = Dispatch::new(
  "glRenderbufferStorageOES",
)

///|
extern "c" fn epoxy_glRenderbufferStorageOES(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glRenderbufferStorageOES"

///|
pub fn gl_renderbuffer_storage_oes(
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glRenderbufferStorageOES(
    d_glRenderbufferStorageOES.get(),
    target,
    internalformat,
    width,
    height,
  )
}

///|
let d_glReplacementCodeubSUN : Dispatch = Dispatch::new(
  "glReplacementCodeubSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeubSUN(fp : CPtr, code : Int) -> Unit = "epoxy_glReplacementCodeubSUN"

///|
pub fn gl_replacement_codeub_sun(code : Int) -> Unit {
  epoxy_glReplacementCodeubSUN(d_glReplacementCodeubSUN.get(), code)
}

///|
let d_glReplacementCodeubvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeubvSUN",
)

///|
#borrow(code)
extern "c" fn epoxy_glReplacementCodeubvSUN(fp : CPtr, code : Bytes) -> Unit = "epoxy_glReplacementCodeubvSUN"

///|
pub fn gl_replacement_codeubv_sun(code : Bytes) -> Unit {
  epoxy_glReplacementCodeubvSUN(d_glReplacementCodeubvSUN.get(), code)
}

///|
let d_glReplacementCodeuiColor3fVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiColor3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiColor3fVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  r : Float,
  g : Float,
  b : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiColor3fVertex3fSUN"

///|
pub fn gl_replacement_codeui_color3f_vertex3f_sun(
  rc : UInt,
  r : Float,
  g : Float,
  b : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiColor3fVertex3fSUN(
    d_glReplacementCodeuiColor3fVertex3fSUN.get(),
    rc,
    r,
    g,
    b,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiColor3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiColor3fVertex3fvSUN",
)

///|
#borrow(rc, c, v)
extern "c" fn epoxy_glReplacementCodeuiColor3fVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  c : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiColor3fVertex3fvSUN"

///|
pub fn gl_replacement_codeui_color3f_vertex3fv_sun(
  rc : FixedArray[UInt],
  c : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiColor3fVertex3fvSUN(
    d_glReplacementCodeuiColor3fVertex3fvSUN.get(),
    rc,
    c,
    v,
  )
}

///|
let d_glReplacementCodeuiColor4fNormal3fVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiColor4fNormal3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiColor4fNormal3fVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiColor4fNormal3fVertex3fSUN"

///|
pub fn gl_replacement_codeui_color4f_normal3f_vertex3f_sun(
  rc : UInt,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiColor4fNormal3fVertex3fSUN(
    d_glReplacementCodeuiColor4fNormal3fVertex3fSUN.get(),
    rc,
    r,
    g,
    b,
    a,
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiColor4fNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiColor4fNormal3fVertex3fvSUN",
)

///|
#borrow(rc, c, n, v)
extern "c" fn epoxy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN"

///|
pub fn gl_replacement_codeui_color4f_normal3f_vertex3fv_sun(
  rc : FixedArray[UInt],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(
    d_glReplacementCodeuiColor4fNormal3fVertex3fvSUN.get(),
    rc,
    c,
    n,
    v,
  )
}

///|
let d_glReplacementCodeuiColor4ubVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiColor4ubVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiColor4ubVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiColor4ubVertex3fSUN"

///|
pub fn gl_replacement_codeui_color4ub_vertex3f_sun(
  rc : UInt,
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiColor4ubVertex3fSUN(
    d_glReplacementCodeuiColor4ubVertex3fSUN.get(),
    rc,
    r,
    g,
    b,
    a,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiColor4ubVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiColor4ubVertex3fvSUN",
)

///|
#borrow(rc, c, v)
extern "c" fn epoxy_glReplacementCodeuiColor4ubVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  c : Bytes,
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiColor4ubVertex3fvSUN"

///|
pub fn gl_replacement_codeui_color4ub_vertex3fv_sun(
  rc : FixedArray[UInt],
  c : Bytes,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiColor4ubVertex3fvSUN(
    d_glReplacementCodeuiColor4ubVertex3fvSUN.get(),
    rc,
    c,
    v,
  )
}

///|
let d_glReplacementCodeuiNormal3fVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiNormal3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiNormal3fVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiNormal3fVertex3fSUN"

///|
pub fn gl_replacement_codeui_normal3f_vertex3f_sun(
  rc : UInt,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiNormal3fVertex3fSUN(
    d_glReplacementCodeuiNormal3fVertex3fSUN.get(),
    rc,
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiNormal3fVertex3fvSUN",
)

///|
#borrow(rc, n, v)
extern "c" fn epoxy_glReplacementCodeuiNormal3fVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiNormal3fVertex3fvSUN"

///|
pub fn gl_replacement_codeui_normal3f_vertex3fv_sun(
  rc : FixedArray[UInt],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiNormal3fVertex3fvSUN(
    d_glReplacementCodeuiNormal3fVertex3fvSUN.get(),
    rc,
    n,
    v,
  )
}

///|
let d_glReplacementCodeuiSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiSUN(fp : CPtr, code : UInt) -> Unit = "epoxy_glReplacementCodeuiSUN"

///|
pub fn gl_replacement_codeui_sun(code : UInt) -> Unit {
  epoxy_glReplacementCodeuiSUN(d_glReplacementCodeuiSUN.get(), code)
}

///|
let d_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  s : Float,
  t : Float,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"

///|
pub fn gl_replacement_codeui_tex_coord2f_color4f_normal3f_vertex3f_sun(
  rc : UInt,
  s : Float,
  t : Float,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(
    d_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN.get(),
    rc,
    s,
    t,
    r,
    g,
    b,
    a,
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN",
)

///|
#borrow(rc, tc, c, n, v)
extern "c" fn epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  tc : FixedArray[Float],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"

///|
pub fn gl_replacement_codeui_tex_coord2f_color4f_normal3f_vertex3fv_sun(
  rc : FixedArray[UInt],
  tc : FixedArray[Float],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(
    d_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN.get(),
    rc,
    tc,
    c,
    n,
    v,
  )
}

///|
let d_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  s : Float,
  t : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"

///|
pub fn gl_replacement_codeui_tex_coord2f_normal3f_vertex3f_sun(
  rc : UInt,
  s : Float,
  t : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(
    d_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN.get(),
    rc,
    s,
    t,
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN",
)

///|
#borrow(rc, tc, n, v)
extern "c" fn epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  tc : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"

///|
pub fn gl_replacement_codeui_tex_coord2f_normal3f_vertex3fv_sun(
  rc : FixedArray[UInt],
  tc : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(
    d_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN.get(),
    rc,
    tc,
    n,
    v,
  )
}

///|
let d_glReplacementCodeuiTexCoord2fVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiTexCoord2fVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiTexCoord2fVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  s : Float,
  t : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiTexCoord2fVertex3fSUN"

///|
pub fn gl_replacement_codeui_tex_coord2f_vertex3f_sun(
  rc : UInt,
  s : Float,
  t : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiTexCoord2fVertex3fSUN(
    d_glReplacementCodeuiTexCoord2fVertex3fSUN.get(),
    rc,
    s,
    t,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiTexCoord2fVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiTexCoord2fVertex3fvSUN",
)

///|
#borrow(rc, tc, v)
extern "c" fn epoxy_glReplacementCodeuiTexCoord2fVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  tc : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiTexCoord2fVertex3fvSUN"

///|
pub fn gl_replacement_codeui_tex_coord2f_vertex3fv_sun(
  rc : FixedArray[UInt],
  tc : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiTexCoord2fVertex3fvSUN(
    d_glReplacementCodeuiTexCoord2fVertex3fvSUN.get(),
    rc,
    tc,
    v,
  )
}

///|
let d_glReplacementCodeuiVertex3fSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiVertex3fSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeuiVertex3fSUN(
  fp : CPtr,
  rc : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glReplacementCodeuiVertex3fSUN"

///|
pub fn gl_replacement_codeui_vertex3f_sun(
  rc : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glReplacementCodeuiVertex3fSUN(
    d_glReplacementCodeuiVertex3fSUN.get(),
    rc,
    x,
    y,
    z,
  )
}

///|
let d_glReplacementCodeuiVertex3fvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuiVertex3fvSUN",
)

///|
#borrow(rc, v)
extern "c" fn epoxy_glReplacementCodeuiVertex3fvSUN(
  fp : CPtr,
  rc : FixedArray[UInt],
  v : FixedArray[Float],
) -> Unit = "epoxy_glReplacementCodeuiVertex3fvSUN"

///|
pub fn gl_replacement_codeui_vertex3fv_sun(
  rc : FixedArray[UInt],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glReplacementCodeuiVertex3fvSUN(
    d_glReplacementCodeuiVertex3fvSUN.get(),
    rc,
    v,
  )
}

///|
let d_glReplacementCodeuivSUN : Dispatch = Dispatch::new(
  "glReplacementCodeuivSUN",
)

///|
#borrow(code)
extern "c" fn epoxy_glReplacementCodeuivSUN(
  fp : CPtr,
  code : FixedArray[UInt],
) -> Unit = "epoxy_glReplacementCodeuivSUN"

///|
pub fn gl_replacement_codeuiv_sun(code : FixedArray[UInt]) -> Unit {
  epoxy_glReplacementCodeuivSUN(d_glReplacementCodeuivSUN.get(), code)
}

///|
let d_glReplacementCodeusSUN : Dispatch = Dispatch::new(
  "glReplacementCodeusSUN",
)

///|
extern "c" fn epoxy_glReplacementCodeusSUN(fp : CPtr, code : Int) -> Unit = "epoxy_glReplacementCodeusSUN"

///|
pub fn gl_replacement_codeus_sun(code : Int) -> Unit {
  epoxy_glReplacementCodeusSUN(d_glReplacementCodeusSUN.get(), code)
}

///|
let d_glReplacementCodeusvSUN : Dispatch = Dispatch::new(
  "glReplacementCodeusvSUN",
)

///|
#borrow(code)
extern "c" fn epoxy_glReplacementCodeusvSUN(
  fp : CPtr,
  code : FixedArray[UInt16],
) -> Unit = "epoxy_glReplacementCodeusvSUN"

///|
pub fn gl_replacement_codeusv_sun(code : FixedArray[UInt16]) -> Unit {
  epoxy_glReplacementCodeusvSUN(d_glReplacementCodeusvSUN.get(), code)
}

///|
let d_glRequestResidentProgramsNV : Dispatch = Dispatch::new(
  "glRequestResidentProgramsNV",
)

///|
#borrow(programs)
extern "c" fn epoxy_glRequestResidentProgramsNV(
  fp : CPtr,
  n : Int,
  programs : FixedArray[UInt],
) -> Unit = "epoxy_glRequestResidentProgramsNV"

///|
pub fn gl_request_resident_programs_nv(
  n : Int,
  programs : FixedArray[UInt],
) -> Unit {
  epoxy_glRequestResidentProgramsNV(
    d_glRequestResidentProgramsNV.get(),
    n,
    programs,
  )
}

///|
let d_glResetHistogram : Dispatch = Dispatch::with_aliases("glResetHistogram", [
  "glResetHistogramEXT",
])

///|
extern "c" fn epoxy_glResetHistogram(fp : CPtr, target : UInt) -> Unit = "epoxy_glResetHistogram"

///|
pub fn gl_reset_histogram(target : UInt) -> Unit {
  epoxy_glResetHistogram(d_glResetHistogram.get(), target)
}

///|
let d_glResetHistogramEXT : Dispatch = Dispatch::with_aliases(
  "glResetHistogramEXT",
  ["glResetHistogram"],
)

///|
extern "c" fn epoxy_glResetHistogramEXT(fp : CPtr, target : UInt) -> Unit = "epoxy_glResetHistogramEXT"

///|
pub fn gl_reset_histogram_ext(target : UInt) -> Unit {
  epoxy_glResetHistogramEXT(d_glResetHistogramEXT.get(), target)
}

///|
let d_glResetMemoryObjectParameterNV : Dispatch = Dispatch::new(
  "glResetMemoryObjectParameterNV",
)

///|
extern "c" fn epoxy_glResetMemoryObjectParameterNV(
  fp : CPtr,
  memory : UInt,
  pname : UInt,
) -> Unit = "epoxy_glResetMemoryObjectParameterNV"

///|
pub fn gl_reset_memory_object_parameter_nv(memory : UInt, pname : UInt) -> Unit {
  epoxy_glResetMemoryObjectParameterNV(
    d_glResetMemoryObjectParameterNV.get(),
    memory,
    pname,
  )
}

///|
let d_glResetMinmax : Dispatch = Dispatch::with_aliases("glResetMinmax", [
  "glResetMinmaxEXT",
])

///|
extern "c" fn epoxy_glResetMinmax(fp : CPtr, target : UInt) -> Unit = "epoxy_glResetMinmax"

///|
pub fn gl_reset_minmax(target : UInt) -> Unit {
  epoxy_glResetMinmax(d_glResetMinmax.get(), target)
}

///|
let d_glResetMinmaxEXT : Dispatch = Dispatch::with_aliases("glResetMinmaxEXT", [
  "glResetMinmax",
])

///|
extern "c" fn epoxy_glResetMinmaxEXT(fp : CPtr, target : UInt) -> Unit = "epoxy_glResetMinmaxEXT"

///|
pub fn gl_reset_minmax_ext(target : UInt) -> Unit {
  epoxy_glResetMinmaxEXT(d_glResetMinmaxEXT.get(), target)
}

///|
let d_glResizeBuffersMESA : Dispatch = Dispatch::new("glResizeBuffersMESA")

///|
extern "c" fn epoxy_glResizeBuffersMESA(fp : CPtr) -> Unit = "epoxy_glResizeBuffersMESA"

///|
pub fn gl_resize_buffers_mesa() -> Unit {
  epoxy_glResizeBuffersMESA(d_glResizeBuffersMESA.get())
}

///|
let d_glResolveDepthValuesNV : Dispatch = Dispatch::new(
  "glResolveDepthValuesNV",
)

///|
extern "c" fn epoxy_glResolveDepthValuesNV(fp : CPtr) -> Unit = "epoxy_glResolveDepthValuesNV"

///|
pub fn gl_resolve_depth_values_nv() -> Unit {
  epoxy_glResolveDepthValuesNV(d_glResolveDepthValuesNV.get())
}

///|
let d_glResolveMultisampleFramebufferAPPLE : Dispatch = Dispatch::new(
  "glResolveMultisampleFramebufferAPPLE",
)

///|
extern "c" fn epoxy_glResolveMultisampleFramebufferAPPLE(fp : CPtr) -> Unit = "epoxy_glResolveMultisampleFramebufferAPPLE"

///|
pub fn gl_resolve_multisample_framebuffer_apple() -> Unit {
  epoxy_glResolveMultisampleFramebufferAPPLE(
    d_glResolveMultisampleFramebufferAPPLE.get(),
  )
}

///|
let d_glResumeTransformFeedback : Dispatch = Dispatch::with_aliases(
  "glResumeTransformFeedback",
  ["glResumeTransformFeedbackNV"],
)

///|
extern "c" fn epoxy_glResumeTransformFeedback(fp : CPtr) -> Unit = "epoxy_glResumeTransformFeedback"

///|
pub fn gl_resume_transform_feedback() -> Unit {
  epoxy_glResumeTransformFeedback(d_glResumeTransformFeedback.get())
}

///|
let d_glResumeTransformFeedbackNV : Dispatch = Dispatch::with_aliases(
  "glResumeTransformFeedbackNV",
  ["glResumeTransformFeedback"],
)

///|
extern "c" fn epoxy_glResumeTransformFeedbackNV(fp : CPtr) -> Unit = "epoxy_glResumeTransformFeedbackNV"

///|
pub fn gl_resume_transform_feedback_nv() -> Unit {
  epoxy_glResumeTransformFeedbackNV(d_glResumeTransformFeedbackNV.get())
}

///|
let d_glRotated : Dispatch = Dispatch::new("glRotated")

///|
extern "c" fn epoxy_glRotated(
  fp : CPtr,
  angle : Double,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glRotated"

///|
pub fn gl_rotated(angle : Double, x : Double, y : Double, z : Double) -> Unit {
  epoxy_glRotated(d_glRotated.get(), angle, x, y, z)
}

///|
let d_glRotatef : Dispatch = Dispatch::new("glRotatef")

///|
extern "c" fn epoxy_glRotatef(
  fp : CPtr,
  angle : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glRotatef"

///|
pub fn gl_rotatef(angle : Float, x : Float, y : Float, z : Float) -> Unit {
  epoxy_glRotatef(d_glRotatef.get(), angle, x, y, z)
}

///|
let d_glRotatex : Dispatch = Dispatch::new("glRotatex")

///|
extern "c" fn epoxy_glRotatex(
  fp : CPtr,
  angle : Int,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glRotatex"

///|
pub fn gl_rotatex(angle : Int, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glRotatex(d_glRotatex.get(), angle, x, y, z)
}

///|
let d_glRotatexOES : Dispatch = Dispatch::new("glRotatexOES")

///|
extern "c" fn epoxy_glRotatexOES(
  fp : CPtr,
  angle : Int,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glRotatexOES"

///|
pub fn gl_rotatex_oes(angle : Int, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glRotatexOES(d_glRotatexOES.get(), angle, x, y, z)
}

///|
let d_glSampleCoverage : Dispatch = Dispatch::with_aliases("glSampleCoverage", [
  "glSampleCoverageARB",
])

///|
extern "c" fn epoxy_glSampleCoverage(
  fp : CPtr,
  value : Float,
  invert : Bool,
) -> Unit = "epoxy_glSampleCoverage"

///|
pub fn gl_sample_coverage(value : Float, invert : Bool) -> Unit {
  epoxy_glSampleCoverage(d_glSampleCoverage.get(), value, invert)
}

///|
let d_glSampleCoverageARB : Dispatch = Dispatch::with_aliases(
  "glSampleCoverageARB",
  ["glSampleCoverage"],
)

///|
extern "c" fn epoxy_glSampleCoverageARB(
  fp : CPtr,
  value : Float,
  invert : Bool,
) -> Unit = "epoxy_glSampleCoverageARB"

///|
pub fn gl_sample_coverage_arb(value : Float, invert : Bool) -> Unit {
  epoxy_glSampleCoverageARB(d_glSampleCoverageARB.get(), value, invert)
}

///|
let d_glSampleCoveragex : Dispatch = Dispatch::new("glSampleCoveragex")

///|
extern "c" fn epoxy_glSampleCoveragex(
  fp : CPtr,
  value : Int,
  invert : Bool,
) -> Unit = "epoxy_glSampleCoveragex"

///|
pub fn gl_sample_coveragex(value : Int, invert : Bool) -> Unit {
  epoxy_glSampleCoveragex(d_glSampleCoveragex.get(), value, invert)
}

///|
let d_glSampleCoveragexOES : Dispatch = Dispatch::new("glSampleCoveragexOES")

///|
extern "c" fn epoxy_glSampleCoveragexOES(
  fp : CPtr,
  value : Int,
  invert : Bool,
) -> Unit = "epoxy_glSampleCoveragexOES"

///|
pub fn gl_sample_coveragex_oes(value : Int, invert : Bool) -> Unit {
  epoxy_glSampleCoveragexOES(d_glSampleCoveragexOES.get(), value, invert)
}

///|
let d_glSampleMapATI : Dispatch = Dispatch::new("glSampleMapATI")

///|
extern "c" fn epoxy_glSampleMapATI(
  fp : CPtr,
  dst : UInt,
  interp : UInt,
  swizzle : UInt,
) -> Unit = "epoxy_glSampleMapATI"

///|
pub fn gl_sample_map_ati(dst : UInt, interp : UInt, swizzle : UInt) -> Unit {
  epoxy_glSampleMapATI(d_glSampleMapATI.get(), dst, interp, swizzle)
}

///|
let d_glSampleMaskEXT : Dispatch = Dispatch::with_aliases("glSampleMaskEXT", [
  "glSampleMaskSGIS",
])

///|
extern "c" fn epoxy_glSampleMaskEXT(
  fp : CPtr,
  value : Float,
  invert : Bool,
) -> Unit = "epoxy_glSampleMaskEXT"

///|
pub fn gl_sample_mask_ext(value : Float, invert : Bool) -> Unit {
  epoxy_glSampleMaskEXT(d_glSampleMaskEXT.get(), value, invert)
}

///|
let d_glSampleMaskIndexedNV : Dispatch = Dispatch::new("glSampleMaskIndexedNV")

///|
extern "c" fn epoxy_glSampleMaskIndexedNV(
  fp : CPtr,
  index : UInt,
  mask : UInt,
) -> Unit = "epoxy_glSampleMaskIndexedNV"

///|
pub fn gl_sample_mask_indexed_nv(index : UInt, mask : UInt) -> Unit {
  epoxy_glSampleMaskIndexedNV(d_glSampleMaskIndexedNV.get(), index, mask)
}

///|
let d_glSampleMaskSGIS : Dispatch = Dispatch::with_aliases("glSampleMaskSGIS", [
  "glSampleMaskEXT",
])

///|
extern "c" fn epoxy_glSampleMaskSGIS(
  fp : CPtr,
  value : Float,
  invert : Bool,
) -> Unit = "epoxy_glSampleMaskSGIS"

///|
pub fn gl_sample_mask_sgis(value : Float, invert : Bool) -> Unit {
  epoxy_glSampleMaskSGIS(d_glSampleMaskSGIS.get(), value, invert)
}

///|
let d_glSampleMaski : Dispatch = Dispatch::new("glSampleMaski")

///|
extern "c" fn epoxy_glSampleMaski(
  fp : CPtr,
  maskNumber : UInt,
  mask : UInt,
) -> Unit = "epoxy_glSampleMaski"

///|
pub fn gl_sample_maski(maskNumber : UInt, mask : UInt) -> Unit {
  epoxy_glSampleMaski(d_glSampleMaski.get(), maskNumber, mask)
}

///|
let d_glSamplePatternEXT : Dispatch = Dispatch::with_aliases(
  "glSamplePatternEXT",
  ["glSamplePatternSGIS"],
)

///|
extern "c" fn epoxy_glSamplePatternEXT(fp : CPtr, pattern : UInt) -> Unit = "epoxy_glSamplePatternEXT"

///|
pub fn gl_sample_pattern_ext(pattern : UInt) -> Unit {
  epoxy_glSamplePatternEXT(d_glSamplePatternEXT.get(), pattern)
}

///|
let d_glSamplePatternSGIS : Dispatch = Dispatch::with_aliases(
  "glSamplePatternSGIS",
  ["glSamplePatternEXT"],
)

///|
extern "c" fn epoxy_glSamplePatternSGIS(fp : CPtr, pattern : UInt) -> Unit = "epoxy_glSamplePatternSGIS"

///|
pub fn gl_sample_pattern_sgis(pattern : UInt) -> Unit {
  epoxy_glSamplePatternSGIS(d_glSamplePatternSGIS.get(), pattern)
}

///|
let d_glSamplerParameterIiv : Dispatch = Dispatch::with_aliases(
  "glSamplerParameterIiv",
  ["glSamplerParameterIivEXT", "glSamplerParameterIivOES"],
)

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameterIiv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glSamplerParameterIiv"

///|
pub fn gl_sampler_parameter_iiv(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glSamplerParameterIiv(
    d_glSamplerParameterIiv.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glSamplerParameterIivEXT : Dispatch = Dispatch::with_aliases(
  "glSamplerParameterIivEXT",
  ["glSamplerParameterIiv", "glSamplerParameterIivOES"],
)

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameterIivEXT(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glSamplerParameterIivEXT"

///|
pub fn gl_sampler_parameter_iiv_ext(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glSamplerParameterIivEXT(
    d_glSamplerParameterIivEXT.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glSamplerParameterIivOES : Dispatch = Dispatch::with_aliases(
  "glSamplerParameterIivOES",
  ["glSamplerParameterIiv", "glSamplerParameterIivEXT"],
)

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameterIivOES(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glSamplerParameterIivOES"

///|
pub fn gl_sampler_parameter_iiv_oes(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glSamplerParameterIivOES(
    d_glSamplerParameterIivOES.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glSamplerParameterIuiv : Dispatch = Dispatch::with_aliases(
  "glSamplerParameterIuiv",
  ["glSamplerParameterIuivEXT", "glSamplerParameterIuivOES"],
)

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameterIuiv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[UInt],
) -> Unit = "epoxy_glSamplerParameterIuiv"

///|
pub fn gl_sampler_parameter_iuiv(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[UInt],
) -> Unit {
  epoxy_glSamplerParameterIuiv(
    d_glSamplerParameterIuiv.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glSamplerParameterIuivEXT : Dispatch = Dispatch::with_aliases(
  "glSamplerParameterIuivEXT",
  ["glSamplerParameterIuiv", "glSamplerParameterIuivOES"],
)

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameterIuivEXT(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[UInt],
) -> Unit = "epoxy_glSamplerParameterIuivEXT"

///|
pub fn gl_sampler_parameter_iuiv_ext(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[UInt],
) -> Unit {
  epoxy_glSamplerParameterIuivEXT(
    d_glSamplerParameterIuivEXT.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glSamplerParameterIuivOES : Dispatch = Dispatch::with_aliases(
  "glSamplerParameterIuivOES",
  ["glSamplerParameterIuiv", "glSamplerParameterIuivEXT"],
)

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameterIuivOES(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[UInt],
) -> Unit = "epoxy_glSamplerParameterIuivOES"

///|
pub fn gl_sampler_parameter_iuiv_oes(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[UInt],
) -> Unit {
  epoxy_glSamplerParameterIuivOES(
    d_glSamplerParameterIuivOES.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glSamplerParameterf : Dispatch = Dispatch::new("glSamplerParameterf")

///|
extern "c" fn epoxy_glSamplerParameterf(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glSamplerParameterf"

///|
pub fn gl_sampler_parameterf(
  sampler : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glSamplerParameterf(d_glSamplerParameterf.get(), sampler, pname, param)
}

///|
let d_glSamplerParameterfv : Dispatch = Dispatch::new("glSamplerParameterfv")

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameterfv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Float],
) -> Unit = "epoxy_glSamplerParameterfv"

///|
pub fn gl_sampler_parameterfv(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Float],
) -> Unit {
  epoxy_glSamplerParameterfv(
    d_glSamplerParameterfv.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glSamplerParameteri : Dispatch = Dispatch::new("glSamplerParameteri")

///|
extern "c" fn epoxy_glSamplerParameteri(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glSamplerParameteri"

///|
pub fn gl_sampler_parameteri(sampler : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glSamplerParameteri(d_glSamplerParameteri.get(), sampler, pname, param)
}

///|
let d_glSamplerParameteriv : Dispatch = Dispatch::new("glSamplerParameteriv")

///|
#borrow(param)
extern "c" fn epoxy_glSamplerParameteriv(
  fp : CPtr,
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glSamplerParameteriv"

///|
pub fn gl_sampler_parameteriv(
  sampler : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glSamplerParameteriv(
    d_glSamplerParameteriv.get(),
    sampler,
    pname,
    param,
  )
}

///|
let d_glScaled : Dispatch = Dispatch::new("glScaled")

///|
extern "c" fn epoxy_glScaled(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glScaled"

///|
pub fn gl_scaled(x : Double, y : Double, z : Double) -> Unit {
  epoxy_glScaled(d_glScaled.get(), x, y, z)
}

///|
let d_glScalef : Dispatch = Dispatch::new("glScalef")

///|
extern "c" fn epoxy_glScalef(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glScalef"

///|
pub fn gl_scalef(x : Float, y : Float, z : Float) -> Unit {
  epoxy_glScalef(d_glScalef.get(), x, y, z)
}

///|
let d_glScalex : Dispatch = Dispatch::new("glScalex")

///|
extern "c" fn epoxy_glScalex(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glScalex"

///|
pub fn gl_scalex(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glScalex(d_glScalex.get(), x, y, z)
}

///|
let d_glScalexOES : Dispatch = Dispatch::new("glScalexOES")

///|
extern "c" fn epoxy_glScalexOES(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glScalexOES"

///|
pub fn gl_scalex_oes(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glScalexOES(d_glScalexOES.get(), x, y, z)
}

///|
let d_glScissor : Dispatch = Dispatch::new("glScissor")

///|
extern "c" fn epoxy_glScissor(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glScissor"

///|
pub fn gl_scissor(x : Int, y : Int, width : Int, height : Int) -> Unit {
  epoxy_glScissor(d_glScissor.get(), x, y, width, height)
}

///|
let d_glScissorArrayv : Dispatch = Dispatch::with_aliases("glScissorArrayv", [
  "glScissorArrayvNV", "glScissorArrayvOES",
])

///|
#borrow(v)
extern "c" fn epoxy_glScissorArrayv(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit = "epoxy_glScissorArrayv"

///|
pub fn gl_scissor_arrayv(
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glScissorArrayv(d_glScissorArrayv.get(), first, count, v)
}

///|
let d_glScissorArrayvNV : Dispatch = Dispatch::with_aliases(
  "glScissorArrayvNV",
  ["glScissorArrayv", "glScissorArrayvOES"],
)

///|
#borrow(v)
extern "c" fn epoxy_glScissorArrayvNV(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit = "epoxy_glScissorArrayvNV"

///|
pub fn gl_scissor_arrayv_nv(
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glScissorArrayvNV(d_glScissorArrayvNV.get(), first, count, v)
}

///|
let d_glScissorArrayvOES : Dispatch = Dispatch::with_aliases(
  "glScissorArrayvOES",
  ["glScissorArrayv", "glScissorArrayvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glScissorArrayvOES(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit = "epoxy_glScissorArrayvOES"

///|
pub fn gl_scissor_arrayv_oes(
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glScissorArrayvOES(d_glScissorArrayvOES.get(), first, count, v)
}

///|
let d_glScissorExclusiveArrayvNV : Dispatch = Dispatch::new(
  "glScissorExclusiveArrayvNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glScissorExclusiveArrayvNV(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit = "epoxy_glScissorExclusiveArrayvNV"

///|
pub fn gl_scissor_exclusive_arrayv_nv(
  first : UInt,
  count : Int,
  v : FixedArray[Int],
) -> Unit {
  epoxy_glScissorExclusiveArrayvNV(
    d_glScissorExclusiveArrayvNV.get(),
    first,
    count,
    v,
  )
}

///|
let d_glScissorExclusiveNV : Dispatch = Dispatch::new("glScissorExclusiveNV")

///|
extern "c" fn epoxy_glScissorExclusiveNV(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glScissorExclusiveNV"

///|
pub fn gl_scissor_exclusive_nv(
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glScissorExclusiveNV(d_glScissorExclusiveNV.get(), x, y, width, height)
}

///|
let d_glScissorIndexed : Dispatch = Dispatch::with_aliases("glScissorIndexed", [
  "glScissorIndexedNV", "glScissorIndexedOES",
])

///|
extern "c" fn epoxy_glScissorIndexed(
  fp : CPtr,
  index : UInt,
  left : Int,
  bottom : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glScissorIndexed"

///|
pub fn gl_scissor_indexed(
  index : UInt,
  left : Int,
  bottom : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glScissorIndexed(
    d_glScissorIndexed.get(),
    index,
    left,
    bottom,
    width,
    height,
  )
}

///|
let d_glScissorIndexedNV : Dispatch = Dispatch::with_aliases(
  "glScissorIndexedNV",
  ["glScissorIndexed", "glScissorIndexedOES"],
)

///|
extern "c" fn epoxy_glScissorIndexedNV(
  fp : CPtr,
  index : UInt,
  left : Int,
  bottom : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glScissorIndexedNV"

///|
pub fn gl_scissor_indexed_nv(
  index : UInt,
  left : Int,
  bottom : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glScissorIndexedNV(
    d_glScissorIndexedNV.get(),
    index,
    left,
    bottom,
    width,
    height,
  )
}

///|
let d_glScissorIndexedOES : Dispatch = Dispatch::with_aliases(
  "glScissorIndexedOES",
  ["glScissorIndexed", "glScissorIndexedNV"],
)

///|
extern "c" fn epoxy_glScissorIndexedOES(
  fp : CPtr,
  index : UInt,
  left : Int,
  bottom : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glScissorIndexedOES"

///|
pub fn gl_scissor_indexed_oes(
  index : UInt,
  left : Int,
  bottom : Int,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glScissorIndexedOES(
    d_glScissorIndexedOES.get(),
    index,
    left,
    bottom,
    width,
    height,
  )
}

///|
let d_glScissorIndexedv : Dispatch = Dispatch::with_aliases(
  "glScissorIndexedv",
  ["glScissorIndexedvNV", "glScissorIndexedvOES"],
)

///|
#borrow(v)
extern "c" fn epoxy_glScissorIndexedv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glScissorIndexedv"

///|
pub fn gl_scissor_indexedv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glScissorIndexedv(d_glScissorIndexedv.get(), index, v)
}

///|
let d_glScissorIndexedvNV : Dispatch = Dispatch::with_aliases(
  "glScissorIndexedvNV",
  ["glScissorIndexedv", "glScissorIndexedvOES"],
)

///|
#borrow(v)
extern "c" fn epoxy_glScissorIndexedvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glScissorIndexedvNV"

///|
pub fn gl_scissor_indexedv_nv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glScissorIndexedvNV(d_glScissorIndexedvNV.get(), index, v)
}

///|
let d_glScissorIndexedvOES : Dispatch = Dispatch::with_aliases(
  "glScissorIndexedvOES",
  ["glScissorIndexedv", "glScissorIndexedvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glScissorIndexedvOES(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glScissorIndexedvOES"

///|
pub fn gl_scissor_indexedv_oes(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glScissorIndexedvOES(d_glScissorIndexedvOES.get(), index, v)
}

///|
let d_glSecondaryColor3b : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3b",
  ["glSecondaryColor3bEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3b(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3b"

///|
pub fn gl_secondary_color3b(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3b(d_glSecondaryColor3b.get(), red, green, blue)
}

///|
let d_glSecondaryColor3bEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3bEXT",
  ["glSecondaryColor3b"],
)

///|
extern "c" fn epoxy_glSecondaryColor3bEXT(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3bEXT"

///|
pub fn gl_secondary_color3b_ext(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3bEXT(d_glSecondaryColor3bEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3bv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3bv",
  ["glSecondaryColor3bvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3bv(fp : CPtr, v : Bytes) -> Unit = "epoxy_glSecondaryColor3bv"

///|
pub fn gl_secondary_color3bv(v : Bytes) -> Unit {
  epoxy_glSecondaryColor3bv(d_glSecondaryColor3bv.get(), v)
}

///|
let d_glSecondaryColor3bvEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3bvEXT",
  ["glSecondaryColor3bv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3bvEXT(fp : CPtr, v : Bytes) -> Unit = "epoxy_glSecondaryColor3bvEXT"

///|
pub fn gl_secondary_color3bv_ext(v : Bytes) -> Unit {
  epoxy_glSecondaryColor3bvEXT(d_glSecondaryColor3bvEXT.get(), v)
}

///|
let d_glSecondaryColor3d : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3d",
  ["glSecondaryColor3dEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3d(
  fp : CPtr,
  red : Double,
  green : Double,
  blue : Double,
) -> Unit = "epoxy_glSecondaryColor3d"

///|
pub fn gl_secondary_color3d(
  red : Double,
  green : Double,
  blue : Double,
) -> Unit {
  epoxy_glSecondaryColor3d(d_glSecondaryColor3d.get(), red, green, blue)
}

///|
let d_glSecondaryColor3dEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3dEXT",
  ["glSecondaryColor3d"],
)

///|
extern "c" fn epoxy_glSecondaryColor3dEXT(
  fp : CPtr,
  red : Double,
  green : Double,
  blue : Double,
) -> Unit = "epoxy_glSecondaryColor3dEXT"

///|
pub fn gl_secondary_color3d_ext(
  red : Double,
  green : Double,
  blue : Double,
) -> Unit {
  epoxy_glSecondaryColor3dEXT(d_glSecondaryColor3dEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3dv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3dv",
  ["glSecondaryColor3dvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3dv(
  fp : CPtr,
  v : FixedArray[Double],
) -> Unit = "epoxy_glSecondaryColor3dv"

///|
pub fn gl_secondary_color3dv(v : FixedArray[Double]) -> Unit {
  epoxy_glSecondaryColor3dv(d_glSecondaryColor3dv.get(), v)
}

///|
let d_glSecondaryColor3dvEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3dvEXT",
  ["glSecondaryColor3dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3dvEXT(
  fp : CPtr,
  v : FixedArray[Double],
) -> Unit = "epoxy_glSecondaryColor3dvEXT"

///|
pub fn gl_secondary_color3dv_ext(v : FixedArray[Double]) -> Unit {
  epoxy_glSecondaryColor3dvEXT(d_glSecondaryColor3dvEXT.get(), v)
}

///|
let d_glSecondaryColor3f : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3f",
  ["glSecondaryColor3fEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3f(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
) -> Unit = "epoxy_glSecondaryColor3f"

///|
pub fn gl_secondary_color3f(red : Float, green : Float, blue : Float) -> Unit {
  epoxy_glSecondaryColor3f(d_glSecondaryColor3f.get(), red, green, blue)
}

///|
let d_glSecondaryColor3fEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3fEXT",
  ["glSecondaryColor3f"],
)

///|
extern "c" fn epoxy_glSecondaryColor3fEXT(
  fp : CPtr,
  red : Float,
  green : Float,
  blue : Float,
) -> Unit = "epoxy_glSecondaryColor3fEXT"

///|
pub fn gl_secondary_color3f_ext(
  red : Float,
  green : Float,
  blue : Float,
) -> Unit {
  epoxy_glSecondaryColor3fEXT(d_glSecondaryColor3fEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3fv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3fv",
  ["glSecondaryColor3fvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3fv(
  fp : CPtr,
  v : FixedArray[Float],
) -> Unit = "epoxy_glSecondaryColor3fv"

///|
pub fn gl_secondary_color3fv(v : FixedArray[Float]) -> Unit {
  epoxy_glSecondaryColor3fv(d_glSecondaryColor3fv.get(), v)
}

///|
let d_glSecondaryColor3fvEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3fvEXT",
  ["glSecondaryColor3fv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3fvEXT(
  fp : CPtr,
  v : FixedArray[Float],
) -> Unit = "epoxy_glSecondaryColor3fvEXT"

///|
pub fn gl_secondary_color3fv_ext(v : FixedArray[Float]) -> Unit {
  epoxy_glSecondaryColor3fvEXT(d_glSecondaryColor3fvEXT.get(), v)
}

///|
let d_glSecondaryColor3hNV : Dispatch = Dispatch::new("glSecondaryColor3hNV")

///|
extern "c" fn epoxy_glSecondaryColor3hNV(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3hNV"

///|
pub fn gl_secondary_color3h_nv(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3hNV(d_glSecondaryColor3hNV.get(), red, green, blue)
}

///|
let d_glSecondaryColor3hvNV : Dispatch = Dispatch::new("glSecondaryColor3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3hvNV(
  fp : CPtr,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glSecondaryColor3hvNV"

///|
pub fn gl_secondary_color3hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glSecondaryColor3hvNV(d_glSecondaryColor3hvNV.get(), v)
}

///|
let d_glSecondaryColor3i : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3i",
  ["glSecondaryColor3iEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3i(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3i"

///|
pub fn gl_secondary_color3i(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3i(d_glSecondaryColor3i.get(), red, green, blue)
}

///|
let d_glSecondaryColor3iEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3iEXT",
  ["glSecondaryColor3i"],
)

///|
extern "c" fn epoxy_glSecondaryColor3iEXT(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3iEXT"

///|
pub fn gl_secondary_color3i_ext(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3iEXT(d_glSecondaryColor3iEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3iv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3iv",
  ["glSecondaryColor3ivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glSecondaryColor3iv"

///|
pub fn gl_secondary_color3iv(v : FixedArray[Int]) -> Unit {
  epoxy_glSecondaryColor3iv(d_glSecondaryColor3iv.get(), v)
}

///|
let d_glSecondaryColor3ivEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3ivEXT",
  ["glSecondaryColor3iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3ivEXT(
  fp : CPtr,
  v : FixedArray[Int],
) -> Unit = "epoxy_glSecondaryColor3ivEXT"

///|
pub fn gl_secondary_color3iv_ext(v : FixedArray[Int]) -> Unit {
  epoxy_glSecondaryColor3ivEXT(d_glSecondaryColor3ivEXT.get(), v)
}

///|
let d_glSecondaryColor3s : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3s",
  ["glSecondaryColor3sEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3s(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3s"

///|
pub fn gl_secondary_color3s(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3s(d_glSecondaryColor3s.get(), red, green, blue)
}

///|
let d_glSecondaryColor3sEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3sEXT",
  ["glSecondaryColor3s"],
)

///|
extern "c" fn epoxy_glSecondaryColor3sEXT(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3sEXT"

///|
pub fn gl_secondary_color3s_ext(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3sEXT(d_glSecondaryColor3sEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3sv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3sv",
  ["glSecondaryColor3svEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3sv(
  fp : CPtr,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glSecondaryColor3sv"

///|
pub fn gl_secondary_color3sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glSecondaryColor3sv(d_glSecondaryColor3sv.get(), v)
}

///|
let d_glSecondaryColor3svEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3svEXT",
  ["glSecondaryColor3sv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3svEXT(
  fp : CPtr,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glSecondaryColor3svEXT"

///|
pub fn gl_secondary_color3sv_ext(v : FixedArray[Int16]) -> Unit {
  epoxy_glSecondaryColor3svEXT(d_glSecondaryColor3svEXT.get(), v)
}

///|
let d_glSecondaryColor3ub : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3ub",
  ["glSecondaryColor3ubEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3ub(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3ub"

///|
pub fn gl_secondary_color3ub(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3ub(d_glSecondaryColor3ub.get(), red, green, blue)
}

///|
let d_glSecondaryColor3ubEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3ubEXT",
  ["glSecondaryColor3ub"],
)

///|
extern "c" fn epoxy_glSecondaryColor3ubEXT(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3ubEXT"

///|
pub fn gl_secondary_color3ub_ext(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3ubEXT(d_glSecondaryColor3ubEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3ubv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3ubv",
  ["glSecondaryColor3ubvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3ubv(fp : CPtr, v : Bytes) -> Unit = "epoxy_glSecondaryColor3ubv"

///|
pub fn gl_secondary_color3ubv(v : Bytes) -> Unit {
  epoxy_glSecondaryColor3ubv(d_glSecondaryColor3ubv.get(), v)
}

///|
let d_glSecondaryColor3ubvEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3ubvEXT",
  ["glSecondaryColor3ubv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3ubvEXT(fp : CPtr, v : Bytes) -> Unit = "epoxy_glSecondaryColor3ubvEXT"

///|
pub fn gl_secondary_color3ubv_ext(v : Bytes) -> Unit {
  epoxy_glSecondaryColor3ubvEXT(d_glSecondaryColor3ubvEXT.get(), v)
}

///|
let d_glSecondaryColor3ui : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3ui",
  ["glSecondaryColor3uiEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3ui(
  fp : CPtr,
  red : UInt,
  green : UInt,
  blue : UInt,
) -> Unit = "epoxy_glSecondaryColor3ui"

///|
pub fn gl_secondary_color3ui(red : UInt, green : UInt, blue : UInt) -> Unit {
  epoxy_glSecondaryColor3ui(d_glSecondaryColor3ui.get(), red, green, blue)
}

///|
let d_glSecondaryColor3uiEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3uiEXT",
  ["glSecondaryColor3ui"],
)

///|
extern "c" fn epoxy_glSecondaryColor3uiEXT(
  fp : CPtr,
  red : UInt,
  green : UInt,
  blue : UInt,
) -> Unit = "epoxy_glSecondaryColor3uiEXT"

///|
pub fn gl_secondary_color3ui_ext(red : UInt, green : UInt, blue : UInt) -> Unit {
  epoxy_glSecondaryColor3uiEXT(d_glSecondaryColor3uiEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3uiv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3uiv",
  ["glSecondaryColor3uivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3uiv(
  fp : CPtr,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glSecondaryColor3uiv"

///|
pub fn gl_secondary_color3uiv(v : FixedArray[UInt]) -> Unit {
  epoxy_glSecondaryColor3uiv(d_glSecondaryColor3uiv.get(), v)
}

///|
let d_glSecondaryColor3uivEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3uivEXT",
  ["glSecondaryColor3uiv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3uivEXT(
  fp : CPtr,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glSecondaryColor3uivEXT"

///|
pub fn gl_secondary_color3uiv_ext(v : FixedArray[UInt]) -> Unit {
  epoxy_glSecondaryColor3uivEXT(d_glSecondaryColor3uivEXT.get(), v)
}

///|
let d_glSecondaryColor3us : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3us",
  ["glSecondaryColor3usEXT"],
)

///|
extern "c" fn epoxy_glSecondaryColor3us(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3us"

///|
pub fn gl_secondary_color3us(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3us(d_glSecondaryColor3us.get(), red, green, blue)
}

///|
let d_glSecondaryColor3usEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3usEXT",
  ["glSecondaryColor3us"],
)

///|
extern "c" fn epoxy_glSecondaryColor3usEXT(
  fp : CPtr,
  red : Int,
  green : Int,
  blue : Int,
) -> Unit = "epoxy_glSecondaryColor3usEXT"

///|
pub fn gl_secondary_color3us_ext(red : Int, green : Int, blue : Int) -> Unit {
  epoxy_glSecondaryColor3usEXT(d_glSecondaryColor3usEXT.get(), red, green, blue)
}

///|
let d_glSecondaryColor3usv : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3usv",
  ["glSecondaryColor3usvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3usv(
  fp : CPtr,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glSecondaryColor3usv"

///|
pub fn gl_secondary_color3usv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glSecondaryColor3usv(d_glSecondaryColor3usv.get(), v)
}

///|
let d_glSecondaryColor3usvEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColor3usvEXT",
  ["glSecondaryColor3usv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glSecondaryColor3usvEXT(
  fp : CPtr,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glSecondaryColor3usvEXT"

///|
pub fn gl_secondary_color3usv_ext(v : FixedArray[UInt16]) -> Unit {
  epoxy_glSecondaryColor3usvEXT(d_glSecondaryColor3usvEXT.get(), v)
}

///|
let d_glSecondaryColorFormatNV : Dispatch = Dispatch::new(
  "glSecondaryColorFormatNV",
)

///|
extern "c" fn epoxy_glSecondaryColorFormatNV(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glSecondaryColorFormatNV"

///|
pub fn gl_secondary_color_format_nv(
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit {
  epoxy_glSecondaryColorFormatNV(
    d_glSecondaryColorFormatNV.get(),
    size,
    type_,
    stride,
  )
}

///|
let d_glSecondaryColorP3ui : Dispatch = Dispatch::new("glSecondaryColorP3ui")

///|
extern "c" fn epoxy_glSecondaryColorP3ui(
  fp : CPtr,
  type_ : UInt,
  color : UInt,
) -> Unit = "epoxy_glSecondaryColorP3ui"

///|
pub fn gl_secondary_color_p3ui(type_ : UInt, color : UInt) -> Unit {
  epoxy_glSecondaryColorP3ui(d_glSecondaryColorP3ui.get(), type_, color)
}

///|
let d_glSecondaryColorP3uiv : Dispatch = Dispatch::new("glSecondaryColorP3uiv")

///|
#borrow(color)
extern "c" fn epoxy_glSecondaryColorP3uiv(
  fp : CPtr,
  type_ : UInt,
  color : FixedArray[UInt],
) -> Unit = "epoxy_glSecondaryColorP3uiv"

///|
pub fn gl_secondary_color_p3uiv(type_ : UInt, color : FixedArray[UInt]) -> Unit {
  epoxy_glSecondaryColorP3uiv(d_glSecondaryColorP3uiv.get(), type_, color)
}

///|
let d_glSecondaryColorPointer : Dispatch = Dispatch::with_aliases(
  "glSecondaryColorPointer",
  ["glSecondaryColorPointerEXT"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glSecondaryColorPointer(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glSecondaryColorPointer"

///|
pub fn gl_secondary_color_pointer(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glSecondaryColorPointer(
    d_glSecondaryColorPointer.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glSecondaryColorPointerEXT : Dispatch = Dispatch::with_aliases(
  "glSecondaryColorPointerEXT",
  ["glSecondaryColorPointer"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glSecondaryColorPointerEXT(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glSecondaryColorPointerEXT"

///|
pub fn gl_secondary_color_pointer_ext(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glSecondaryColorPointerEXT(
    d_glSecondaryColorPointerEXT.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glSelectBuffer : Dispatch = Dispatch::new("glSelectBuffer")

///|
#borrow(buffer)
extern "c" fn epoxy_glSelectBuffer(
  fp : CPtr,
  size : Int,
  buffer : FixedArray[UInt],
) -> Unit = "epoxy_glSelectBuffer"

///|
pub fn gl_select_buffer(size : Int, buffer : FixedArray[UInt]) -> Unit {
  epoxy_glSelectBuffer(d_glSelectBuffer.get(), size, buffer)
}

///|
let d_glSelectPerfMonitorCountersAMD : Dispatch = Dispatch::new(
  "glSelectPerfMonitorCountersAMD",
)

///|
#borrow(counterList)
extern "c" fn epoxy_glSelectPerfMonitorCountersAMD(
  fp : CPtr,
  monitor : UInt,
  enable : Bool,
  group : UInt,
  numCounters : Int,
  counterList : FixedArray[UInt],
) -> Unit = "epoxy_glSelectPerfMonitorCountersAMD"

///|
pub fn gl_select_perf_monitor_counters_amd(
  monitor : UInt,
  enable : Bool,
  group : UInt,
  numCounters : Int,
  counterList : FixedArray[UInt],
) -> Unit {
  epoxy_glSelectPerfMonitorCountersAMD(
    d_glSelectPerfMonitorCountersAMD.get(),
    monitor,
    enable,
    group,
    numCounters,
    counterList,
  )
}

///|
let d_glSemaphoreParameterivNV : Dispatch = Dispatch::new(
  "glSemaphoreParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glSemaphoreParameterivNV(
  fp : CPtr,
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glSemaphoreParameterivNV"

///|
pub fn gl_semaphore_parameteriv_nv(
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glSemaphoreParameterivNV(
    d_glSemaphoreParameterivNV.get(),
    semaphore,
    pname,
    params,
  )
}

///|
let d_glSemaphoreParameterui64vEXT : Dispatch = Dispatch::new(
  "glSemaphoreParameterui64vEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glSemaphoreParameterui64vEXT(
  fp : CPtr,
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit = "epoxy_glSemaphoreParameterui64vEXT"

///|
pub fn gl_semaphore_parameterui64v_ext(
  semaphore : UInt,
  pname : UInt,
  params : FixedArray[UInt64],
) -> Unit {
  epoxy_glSemaphoreParameterui64vEXT(
    d_glSemaphoreParameterui64vEXT.get(),
    semaphore,
    pname,
    params,
  )
}

///|
let d_glSeparableFilter2D : Dispatch = Dispatch::with_aliases(
  "glSeparableFilter2D",
  ["glSeparableFilter2DEXT"],
)

///|
#borrow(row, column)
extern "c" fn epoxy_glSeparableFilter2D(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
) -> Unit = "epoxy_glSeparableFilter2D"

///|
pub fn gl_separable_filter2_d(
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
) -> Unit {
  epoxy_glSeparableFilter2D(
    d_glSeparableFilter2D.get(),
    target,
    internalformat,
    width,
    height,
    format,
    type_,
    row,
    column,
  )
}

///|
let d_glSeparableFilter2DEXT : Dispatch = Dispatch::with_aliases(
  "glSeparableFilter2DEXT",
  ["glSeparableFilter2D"],
)

///|
#borrow(row, column)
extern "c" fn epoxy_glSeparableFilter2DEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
) -> Unit = "epoxy_glSeparableFilter2DEXT"

///|
pub fn gl_separable_filter2_dext(
  target : UInt,
  internalformat : UInt,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  row : Bytes,
  column : Bytes,
) -> Unit {
  epoxy_glSeparableFilter2DEXT(
    d_glSeparableFilter2DEXT.get(),
    target,
    internalformat,
    width,
    height,
    format,
    type_,
    row,
    column,
  )
}

///|
let d_glSetFenceAPPLE : Dispatch = Dispatch::new("glSetFenceAPPLE")

///|
extern "c" fn epoxy_glSetFenceAPPLE(fp : CPtr, fence : UInt) -> Unit = "epoxy_glSetFenceAPPLE"

///|
pub fn gl_set_fence_apple(fence : UInt) -> Unit {
  epoxy_glSetFenceAPPLE(d_glSetFenceAPPLE.get(), fence)
}

///|
let d_glSetFenceNV : Dispatch = Dispatch::new("glSetFenceNV")

///|
extern "c" fn epoxy_glSetFenceNV(
  fp : CPtr,
  fence : UInt,
  condition : UInt,
) -> Unit = "epoxy_glSetFenceNV"

///|
pub fn gl_set_fence_nv(fence : UInt, condition : UInt) -> Unit {
  epoxy_glSetFenceNV(d_glSetFenceNV.get(), fence, condition)
}

///|
let d_glSetFragmentShaderConstantATI : Dispatch = Dispatch::new(
  "glSetFragmentShaderConstantATI",
)

///|
#borrow(value)
extern "c" fn epoxy_glSetFragmentShaderConstantATI(
  fp : CPtr,
  dst : UInt,
  value : FixedArray[Float],
) -> Unit = "epoxy_glSetFragmentShaderConstantATI"

///|
pub fn gl_set_fragment_shader_constant_ati(
  dst : UInt,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glSetFragmentShaderConstantATI(
    d_glSetFragmentShaderConstantATI.get(),
    dst,
    value,
  )
}

///|
let d_glSetInvariantEXT : Dispatch = Dispatch::new("glSetInvariantEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glSetInvariantEXT(
  fp : CPtr,
  id : UInt,
  type_ : UInt,
  addr : Bytes,
) -> Unit = "epoxy_glSetInvariantEXT"

///|
pub fn gl_set_invariant_ext(id : UInt, type_ : UInt, addr : Bytes) -> Unit {
  epoxy_glSetInvariantEXT(d_glSetInvariantEXT.get(), id, type_, addr)
}

///|
let d_glSetLocalConstantEXT : Dispatch = Dispatch::new("glSetLocalConstantEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glSetLocalConstantEXT(
  fp : CPtr,
  id : UInt,
  type_ : UInt,
  addr : Bytes,
) -> Unit = "epoxy_glSetLocalConstantEXT"

///|
pub fn gl_set_local_constant_ext(id : UInt, type_ : UInt, addr : Bytes) -> Unit {
  epoxy_glSetLocalConstantEXT(d_glSetLocalConstantEXT.get(), id, type_, addr)
}

///|
let d_glSetMultisamplefvAMD : Dispatch = Dispatch::new("glSetMultisamplefvAMD")

///|
#borrow(val)
extern "c" fn epoxy_glSetMultisamplefvAMD(
  fp : CPtr,
  pname : UInt,
  index : UInt,
  val : FixedArray[Float],
) -> Unit = "epoxy_glSetMultisamplefvAMD"

///|
pub fn gl_set_multisamplefv_amd(
  pname : UInt,
  index : UInt,
  val : FixedArray[Float],
) -> Unit {
  epoxy_glSetMultisamplefvAMD(d_glSetMultisamplefvAMD.get(), pname, index, val)
}

///|
let d_glShadeModel : Dispatch = Dispatch::new("glShadeModel")

///|
extern "c" fn epoxy_glShadeModel(fp : CPtr, mode : UInt) -> Unit = "epoxy_glShadeModel"

///|
pub fn gl_shade_model(mode : UInt) -> Unit {
  epoxy_glShadeModel(d_glShadeModel.get(), mode)
}

///|
let d_glShaderBinary : Dispatch = Dispatch::new("glShaderBinary")

///|
#borrow(shaders, binary)
extern "c" fn epoxy_glShaderBinary(
  fp : CPtr,
  count : Int,
  shaders : FixedArray[UInt],
  binaryFormat : UInt,
  binary : Bytes,
  length : Int,
) -> Unit = "epoxy_glShaderBinary"

///|
pub fn gl_shader_binary(
  count : Int,
  shaders : FixedArray[UInt],
  binaryFormat : UInt,
  binary : Bytes,
  length : Int,
) -> Unit {
  epoxy_glShaderBinary(
    d_glShaderBinary.get(),
    count,
    shaders,
    binaryFormat,
    binary,
    length,
  )
}

///|
let d_glShaderOp1EXT : Dispatch = Dispatch::new("glShaderOp1EXT")

///|
extern "c" fn epoxy_glShaderOp1EXT(
  fp : CPtr,
  op : UInt,
  res : UInt,
  arg1 : UInt,
) -> Unit = "epoxy_glShaderOp1EXT"

///|
pub fn gl_shader_op1_ext(op : UInt, res : UInt, arg1 : UInt) -> Unit {
  epoxy_glShaderOp1EXT(d_glShaderOp1EXT.get(), op, res, arg1)
}

///|
let d_glShaderOp2EXT : Dispatch = Dispatch::new("glShaderOp2EXT")

///|
extern "c" fn epoxy_glShaderOp2EXT(
  fp : CPtr,
  op : UInt,
  res : UInt,
  arg1 : UInt,
  arg2 : UInt,
) -> Unit = "epoxy_glShaderOp2EXT"

///|
pub fn gl_shader_op2_ext(
  op : UInt,
  res : UInt,
  arg1 : UInt,
  arg2 : UInt,
) -> Unit {
  epoxy_glShaderOp2EXT(d_glShaderOp2EXT.get(), op, res, arg1, arg2)
}

///|
let d_glShaderOp3EXT : Dispatch = Dispatch::new("glShaderOp3EXT")

///|
extern "c" fn epoxy_glShaderOp3EXT(
  fp : CPtr,
  op : UInt,
  res : UInt,
  arg1 : UInt,
  arg2 : UInt,
  arg3 : UInt,
) -> Unit = "epoxy_glShaderOp3EXT"

///|
pub fn gl_shader_op3_ext(
  op : UInt,
  res : UInt,
  arg1 : UInt,
  arg2 : UInt,
  arg3 : UInt,
) -> Unit {
  epoxy_glShaderOp3EXT(d_glShaderOp3EXT.get(), op, res, arg1, arg2, arg3)
}

///|
let d_glShaderSource : Dispatch = Dispatch::with_aliases("glShaderSource", [
  "glShaderSourceARB",
])

///|
#borrow(string, length)
extern "c" fn epoxy_glShaderSource(
  fp : CPtr,
  shader : UInt,
  count : Int,
  string : FixedArray[Bytes],
  length : FixedArray[Int],
) -> Unit = "epoxy_glShaderSource"

///|
pub fn gl_shader_source(
  shader : UInt,
  count : Int,
  string : FixedArray[Bytes],
  length : FixedArray[Int],
) -> Unit {
  epoxy_glShaderSource(d_glShaderSource.get(), shader, count, string, length)
}

///|
let d_glShaderStorageBlockBinding : Dispatch = Dispatch::new(
  "glShaderStorageBlockBinding",
)

///|
extern "c" fn epoxy_glShaderStorageBlockBinding(
  fp : CPtr,
  program : UInt,
  storageBlockIndex : UInt,
  storageBlockBinding : UInt,
) -> Unit = "epoxy_glShaderStorageBlockBinding"

///|
pub fn gl_shader_storage_block_binding(
  program : UInt,
  storageBlockIndex : UInt,
  storageBlockBinding : UInt,
) -> Unit {
  epoxy_glShaderStorageBlockBinding(
    d_glShaderStorageBlockBinding.get(),
    program,
    storageBlockIndex,
    storageBlockBinding,
  )
}

///|
let d_glShadingRateEXT : Dispatch = Dispatch::new("glShadingRateEXT")

///|
extern "c" fn epoxy_glShadingRateEXT(fp : CPtr, rate : UInt) -> Unit = "epoxy_glShadingRateEXT"

///|
pub fn gl_shading_rate_ext(rate : UInt) -> Unit {
  epoxy_glShadingRateEXT(d_glShadingRateEXT.get(), rate)
}

///|
let d_glShadingRateCombinerOpsEXT : Dispatch = Dispatch::new(
  "glShadingRateCombinerOpsEXT",
)

///|
extern "c" fn epoxy_glShadingRateCombinerOpsEXT(
  fp : CPtr,
  combinerOp0 : UInt,
  combinerOp1 : UInt,
) -> Unit = "epoxy_glShadingRateCombinerOpsEXT"

///|
pub fn gl_shading_rate_combiner_ops_ext(
  combinerOp0 : UInt,
  combinerOp1 : UInt,
) -> Unit {
  epoxy_glShadingRateCombinerOpsEXT(
    d_glShadingRateCombinerOpsEXT.get(),
    combinerOp0,
    combinerOp1,
  )
}

///|
let d_glShadingRateImageBarrierNV : Dispatch = Dispatch::new(
  "glShadingRateImageBarrierNV",
)

///|
extern "c" fn epoxy_glShadingRateImageBarrierNV(
  fp : CPtr,
  synchronize : Bool,
) -> Unit = "epoxy_glShadingRateImageBarrierNV"

///|
pub fn gl_shading_rate_image_barrier_nv(synchronize : Bool) -> Unit {
  epoxy_glShadingRateImageBarrierNV(
    d_glShadingRateImageBarrierNV.get(),
    synchronize,
  )
}

///|
let d_glShadingRateQCOM : Dispatch = Dispatch::new("glShadingRateQCOM")

///|
extern "c" fn epoxy_glShadingRateQCOM(fp : CPtr, rate : UInt) -> Unit = "epoxy_glShadingRateQCOM"

///|
pub fn gl_shading_rate_qcom(rate : UInt) -> Unit {
  epoxy_glShadingRateQCOM(d_glShadingRateQCOM.get(), rate)
}

///|
let d_glShadingRateImagePaletteNV : Dispatch = Dispatch::new(
  "glShadingRateImagePaletteNV",
)

///|
#borrow(rates)
extern "c" fn epoxy_glShadingRateImagePaletteNV(
  fp : CPtr,
  viewport : UInt,
  first : UInt,
  count : Int,
  rates : FixedArray[UInt],
) -> Unit = "epoxy_glShadingRateImagePaletteNV"

///|
pub fn gl_shading_rate_image_palette_nv(
  viewport : UInt,
  first : UInt,
  count : Int,
  rates : FixedArray[UInt],
) -> Unit {
  epoxy_glShadingRateImagePaletteNV(
    d_glShadingRateImagePaletteNV.get(),
    viewport,
    first,
    count,
    rates,
  )
}

///|
let d_glShadingRateSampleOrderNV : Dispatch = Dispatch::new(
  "glShadingRateSampleOrderNV",
)

///|
extern "c" fn epoxy_glShadingRateSampleOrderNV(fp : CPtr, order : UInt) -> Unit = "epoxy_glShadingRateSampleOrderNV"

///|
pub fn gl_shading_rate_sample_order_nv(order : UInt) -> Unit {
  epoxy_glShadingRateSampleOrderNV(d_glShadingRateSampleOrderNV.get(), order)
}

///|
let d_glShadingRateSampleOrderCustomNV : Dispatch = Dispatch::new(
  "glShadingRateSampleOrderCustomNV",
)

///|
#borrow(locations)
extern "c" fn epoxy_glShadingRateSampleOrderCustomNV(
  fp : CPtr,
  rate : UInt,
  samples : UInt,
  locations : FixedArray[Int],
) -> Unit = "epoxy_glShadingRateSampleOrderCustomNV"

///|
pub fn gl_shading_rate_sample_order_custom_nv(
  rate : UInt,
  samples : UInt,
  locations : FixedArray[Int],
) -> Unit {
  epoxy_glShadingRateSampleOrderCustomNV(
    d_glShadingRateSampleOrderCustomNV.get(),
    rate,
    samples,
    locations,
  )
}

///|
let d_glSharpenTexFuncSGIS : Dispatch = Dispatch::new("glSharpenTexFuncSGIS")

///|
#borrow(points)
extern "c" fn epoxy_glSharpenTexFuncSGIS(
  fp : CPtr,
  target : UInt,
  n : Int,
  points : FixedArray[Float],
) -> Unit = "epoxy_glSharpenTexFuncSGIS"

///|
pub fn gl_sharpen_tex_func_sgis(
  target : UInt,
  n : Int,
  points : FixedArray[Float],
) -> Unit {
  epoxy_glSharpenTexFuncSGIS(d_glSharpenTexFuncSGIS.get(), target, n, points)
}

///|
let d_glSignalSemaphoreEXT : Dispatch = Dispatch::new("glSignalSemaphoreEXT")

///|
#borrow(buffers, textures, dstLayouts)
extern "c" fn epoxy_glSignalSemaphoreEXT(
  fp : CPtr,
  semaphore : UInt,
  numBufferBarriers : UInt,
  buffers : FixedArray[UInt],
  numTextureBarriers : UInt,
  textures : FixedArray[UInt],
  dstLayouts : FixedArray[UInt],
) -> Unit = "epoxy_glSignalSemaphoreEXT"

///|
pub fn gl_signal_semaphore_ext(
  semaphore : UInt,
  numBufferBarriers : UInt,
  buffers : FixedArray[UInt],
  numTextureBarriers : UInt,
  textures : FixedArray[UInt],
  dstLayouts : FixedArray[UInt],
) -> Unit {
  epoxy_glSignalSemaphoreEXT(
    d_glSignalSemaphoreEXT.get(),
    semaphore,
    numBufferBarriers,
    buffers,
    numTextureBarriers,
    textures,
    dstLayouts,
  )
}

///|
let d_glSignalSemaphoreui64NVX : Dispatch = Dispatch::new(
  "glSignalSemaphoreui64NVX",
)

///|
#borrow(semaphoreArray, fenceValueArray)
extern "c" fn epoxy_glSignalSemaphoreui64NVX(
  fp : CPtr,
  signalGpu : UInt,
  fenceObjectCount : Int,
  semaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
) -> Unit = "epoxy_glSignalSemaphoreui64NVX"

///|
pub fn gl_signal_semaphoreui64_nvx(
  signalGpu : UInt,
  fenceObjectCount : Int,
  semaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
) -> Unit {
  epoxy_glSignalSemaphoreui64NVX(
    d_glSignalSemaphoreui64NVX.get(),
    signalGpu,
    fenceObjectCount,
    semaphoreArray,
    fenceValueArray,
  )
}

///|
let d_glSpecializeShader : Dispatch = Dispatch::with_aliases(
  "glSpecializeShader",
  ["glSpecializeShaderARB"],
)

///|
#borrow(pEntryPoint, pConstantIndex, pConstantValue)
extern "c" fn epoxy_glSpecializeShader(
  fp : CPtr,
  shader : UInt,
  pEntryPoint : Bytes,
  numSpecializationConstants : UInt,
  pConstantIndex : FixedArray[UInt],
  pConstantValue : FixedArray[UInt],
) -> Unit = "epoxy_glSpecializeShader"

///|
pub fn gl_specialize_shader(
  shader : UInt,
  pEntryPoint : Bytes,
  numSpecializationConstants : UInt,
  pConstantIndex : FixedArray[UInt],
  pConstantValue : FixedArray[UInt],
) -> Unit {
  epoxy_glSpecializeShader(
    d_glSpecializeShader.get(),
    shader,
    pEntryPoint,
    numSpecializationConstants,
    pConstantIndex,
    pConstantValue,
  )
}

///|
let d_glSpecializeShaderARB : Dispatch = Dispatch::with_aliases(
  "glSpecializeShaderARB",
  ["glSpecializeShader"],
)

///|
#borrow(pEntryPoint, pConstantIndex, pConstantValue)
extern "c" fn epoxy_glSpecializeShaderARB(
  fp : CPtr,
  shader : UInt,
  pEntryPoint : Bytes,
  numSpecializationConstants : UInt,
  pConstantIndex : FixedArray[UInt],
  pConstantValue : FixedArray[UInt],
) -> Unit = "epoxy_glSpecializeShaderARB"

///|
pub fn gl_specialize_shader_arb(
  shader : UInt,
  pEntryPoint : Bytes,
  numSpecializationConstants : UInt,
  pConstantIndex : FixedArray[UInt],
  pConstantValue : FixedArray[UInt],
) -> Unit {
  epoxy_glSpecializeShaderARB(
    d_glSpecializeShaderARB.get(),
    shader,
    pEntryPoint,
    numSpecializationConstants,
    pConstantIndex,
    pConstantValue,
  )
}

///|
let d_glSpriteParameterfSGIX : Dispatch = Dispatch::new(
  "glSpriteParameterfSGIX",
)

///|
extern "c" fn epoxy_glSpriteParameterfSGIX(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glSpriteParameterfSGIX"

///|
pub fn gl_sprite_parameterf_sgix(pname : UInt, param : Float) -> Unit {
  epoxy_glSpriteParameterfSGIX(d_glSpriteParameterfSGIX.get(), pname, param)
}

///|
let d_glSpriteParameterfvSGIX : Dispatch = Dispatch::new(
  "glSpriteParameterfvSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glSpriteParameterfvSGIX(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glSpriteParameterfvSGIX"

///|
pub fn gl_sprite_parameterfv_sgix(
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glSpriteParameterfvSGIX(d_glSpriteParameterfvSGIX.get(), pname, params)
}

///|
let d_glSpriteParameteriSGIX : Dispatch = Dispatch::new(
  "glSpriteParameteriSGIX",
)

///|
extern "c" fn epoxy_glSpriteParameteriSGIX(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glSpriteParameteriSGIX"

///|
pub fn gl_sprite_parameteri_sgix(pname : UInt, param : Int) -> Unit {
  epoxy_glSpriteParameteriSGIX(d_glSpriteParameteriSGIX.get(), pname, param)
}

///|
let d_glSpriteParameterivSGIX : Dispatch = Dispatch::new(
  "glSpriteParameterivSGIX",
)

///|
#borrow(params)
extern "c" fn epoxy_glSpriteParameterivSGIX(
  fp : CPtr,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glSpriteParameterivSGIX"

///|
pub fn gl_sprite_parameteriv_sgix(
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glSpriteParameterivSGIX(d_glSpriteParameterivSGIX.get(), pname, params)
}

///|
let d_glStartInstrumentsSGIX : Dispatch = Dispatch::new(
  "glStartInstrumentsSGIX",
)

///|
extern "c" fn epoxy_glStartInstrumentsSGIX(fp : CPtr) -> Unit = "epoxy_glStartInstrumentsSGIX"

///|
pub fn gl_start_instruments_sgix() -> Unit {
  epoxy_glStartInstrumentsSGIX(d_glStartInstrumentsSGIX.get())
}

///|
let d_glStartTilingQCOM : Dispatch = Dispatch::new("glStartTilingQCOM")

///|
extern "c" fn epoxy_glStartTilingQCOM(
  fp : CPtr,
  x : UInt,
  y : UInt,
  width : UInt,
  height : UInt,
  preserveMask : UInt,
) -> Unit = "epoxy_glStartTilingQCOM"

///|
pub fn gl_start_tiling_qcom(
  x : UInt,
  y : UInt,
  width : UInt,
  height : UInt,
  preserveMask : UInt,
) -> Unit {
  epoxy_glStartTilingQCOM(
    d_glStartTilingQCOM.get(),
    x,
    y,
    width,
    height,
    preserveMask,
  )
}

///|
let d_glStateCaptureNV : Dispatch = Dispatch::new("glStateCaptureNV")

///|
extern "c" fn epoxy_glStateCaptureNV(
  fp : CPtr,
  state : UInt,
  mode : UInt,
) -> Unit = "epoxy_glStateCaptureNV"

///|
pub fn gl_state_capture_nv(state : UInt, mode : UInt) -> Unit {
  epoxy_glStateCaptureNV(d_glStateCaptureNV.get(), state, mode)
}

///|
let d_glStencilClearTagEXT : Dispatch = Dispatch::new("glStencilClearTagEXT")

///|
extern "c" fn epoxy_glStencilClearTagEXT(
  fp : CPtr,
  stencilTagBits : Int,
  stencilClearTag : UInt,
) -> Unit = "epoxy_glStencilClearTagEXT"

///|
pub fn gl_stencil_clear_tag_ext(
  stencilTagBits : Int,
  stencilClearTag : UInt,
) -> Unit {
  epoxy_glStencilClearTagEXT(
    d_glStencilClearTagEXT.get(),
    stencilTagBits,
    stencilClearTag,
  )
}

///|
let d_glStencilFillPathInstancedNV : Dispatch = Dispatch::new(
  "glStencilFillPathInstancedNV",
)

///|
#borrow(paths, transformValues)
extern "c" fn epoxy_glStencilFillPathInstancedNV(
  fp : CPtr,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  fillMode : UInt,
  mask : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit = "epoxy_glStencilFillPathInstancedNV"

///|
pub fn gl_stencil_fill_path_instanced_nv(
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  fillMode : UInt,
  mask : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit {
  epoxy_glStencilFillPathInstancedNV(
    d_glStencilFillPathInstancedNV.get(),
    numPaths,
    pathNameType,
    paths,
    pathBase,
    fillMode,
    mask,
    transformType,
    transformValues,
  )
}

///|
let d_glStencilFillPathNV : Dispatch = Dispatch::new("glStencilFillPathNV")

///|
extern "c" fn epoxy_glStencilFillPathNV(
  fp : CPtr,
  path : UInt,
  fillMode : UInt,
  mask : UInt,
) -> Unit = "epoxy_glStencilFillPathNV"

///|
pub fn gl_stencil_fill_path_nv(
  path : UInt,
  fillMode : UInt,
  mask : UInt,
) -> Unit {
  epoxy_glStencilFillPathNV(d_glStencilFillPathNV.get(), path, fillMode, mask)
}

///|
let d_glStencilFunc : Dispatch = Dispatch::new("glStencilFunc")

///|
extern "c" fn epoxy_glStencilFunc(
  fp : CPtr,
  func : UInt,
  ref_ : Int,
  mask : UInt,
) -> Unit = "epoxy_glStencilFunc"

///|
pub fn gl_stencil_func(func : UInt, ref_ : Int, mask : UInt) -> Unit {
  epoxy_glStencilFunc(d_glStencilFunc.get(), func, ref_, mask)
}

///|
let d_glStencilFuncSeparate : Dispatch = Dispatch::new("glStencilFuncSeparate")

///|
extern "c" fn epoxy_glStencilFuncSeparate(
  fp : CPtr,
  face : UInt,
  func : UInt,
  ref_ : Int,
  mask : UInt,
) -> Unit = "epoxy_glStencilFuncSeparate"

///|
pub fn gl_stencil_func_separate(
  face : UInt,
  func : UInt,
  ref_ : Int,
  mask : UInt,
) -> Unit {
  epoxy_glStencilFuncSeparate(
    d_glStencilFuncSeparate.get(),
    face,
    func,
    ref_,
    mask,
  )
}

///|
let d_glStencilFuncSeparateATI : Dispatch = Dispatch::new(
  "glStencilFuncSeparateATI",
)

///|
extern "c" fn epoxy_glStencilFuncSeparateATI(
  fp : CPtr,
  frontfunc : UInt,
  backfunc : UInt,
  ref_ : Int,
  mask : UInt,
) -> Unit = "epoxy_glStencilFuncSeparateATI"

///|
pub fn gl_stencil_func_separate_ati(
  frontfunc : UInt,
  backfunc : UInt,
  ref_ : Int,
  mask : UInt,
) -> Unit {
  epoxy_glStencilFuncSeparateATI(
    d_glStencilFuncSeparateATI.get(),
    frontfunc,
    backfunc,
    ref_,
    mask,
  )
}

///|
let d_glStencilMask : Dispatch = Dispatch::new("glStencilMask")

///|
extern "c" fn epoxy_glStencilMask(fp : CPtr, mask : UInt) -> Unit = "epoxy_glStencilMask"

///|
pub fn gl_stencil_mask(mask : UInt) -> Unit {
  epoxy_glStencilMask(d_glStencilMask.get(), mask)
}

///|
let d_glStencilMaskSeparate : Dispatch = Dispatch::new("glStencilMaskSeparate")

///|
extern "c" fn epoxy_glStencilMaskSeparate(
  fp : CPtr,
  face : UInt,
  mask : UInt,
) -> Unit = "epoxy_glStencilMaskSeparate"

///|
pub fn gl_stencil_mask_separate(face : UInt, mask : UInt) -> Unit {
  epoxy_glStencilMaskSeparate(d_glStencilMaskSeparate.get(), face, mask)
}

///|
let d_glStencilOp : Dispatch = Dispatch::new("glStencilOp")

///|
extern "c" fn epoxy_glStencilOp(
  fp : CPtr,
  fail : UInt,
  zfail : UInt,
  zpass : UInt,
) -> Unit = "epoxy_glStencilOp"

///|
pub fn gl_stencil_op(fail : UInt, zfail : UInt, zpass : UInt) -> Unit {
  epoxy_glStencilOp(d_glStencilOp.get(), fail, zfail, zpass)
}

///|
let d_glStencilOpSeparate : Dispatch = Dispatch::with_aliases(
  "glStencilOpSeparate",
  ["glStencilOpSeparateATI"],
)

///|
extern "c" fn epoxy_glStencilOpSeparate(
  fp : CPtr,
  face : UInt,
  sfail : UInt,
  dpfail : UInt,
  dppass : UInt,
) -> Unit = "epoxy_glStencilOpSeparate"

///|
pub fn gl_stencil_op_separate(
  face : UInt,
  sfail : UInt,
  dpfail : UInt,
  dppass : UInt,
) -> Unit {
  epoxy_glStencilOpSeparate(
    d_glStencilOpSeparate.get(),
    face,
    sfail,
    dpfail,
    dppass,
  )
}

///|
let d_glStencilOpSeparateATI : Dispatch = Dispatch::with_aliases(
  "glStencilOpSeparateATI",
  ["glStencilOpSeparate"],
)

///|
extern "c" fn epoxy_glStencilOpSeparateATI(
  fp : CPtr,
  face : UInt,
  sfail : UInt,
  dpfail : UInt,
  dppass : UInt,
) -> Unit = "epoxy_glStencilOpSeparateATI"

///|
pub fn gl_stencil_op_separate_ati(
  face : UInt,
  sfail : UInt,
  dpfail : UInt,
  dppass : UInt,
) -> Unit {
  epoxy_glStencilOpSeparateATI(
    d_glStencilOpSeparateATI.get(),
    face,
    sfail,
    dpfail,
    dppass,
  )
}

///|
let d_glStencilOpValueAMD : Dispatch = Dispatch::new("glStencilOpValueAMD")

///|
extern "c" fn epoxy_glStencilOpValueAMD(
  fp : CPtr,
  face : UInt,
  value : UInt,
) -> Unit = "epoxy_glStencilOpValueAMD"

///|
pub fn gl_stencil_op_value_amd(face : UInt, value : UInt) -> Unit {
  epoxy_glStencilOpValueAMD(d_glStencilOpValueAMD.get(), face, value)
}

///|
let d_glStencilStrokePathInstancedNV : Dispatch = Dispatch::new(
  "glStencilStrokePathInstancedNV",
)

///|
#borrow(paths, transformValues)
extern "c" fn epoxy_glStencilStrokePathInstancedNV(
  fp : CPtr,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  reference : Int,
  mask : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit = "epoxy_glStencilStrokePathInstancedNV"

///|
pub fn gl_stencil_stroke_path_instanced_nv(
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  reference : Int,
  mask : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit {
  epoxy_glStencilStrokePathInstancedNV(
    d_glStencilStrokePathInstancedNV.get(),
    numPaths,
    pathNameType,
    paths,
    pathBase,
    reference,
    mask,
    transformType,
    transformValues,
  )
}

///|
let d_glStencilStrokePathNV : Dispatch = Dispatch::new("glStencilStrokePathNV")

///|
extern "c" fn epoxy_glStencilStrokePathNV(
  fp : CPtr,
  path : UInt,
  reference : Int,
  mask : UInt,
) -> Unit = "epoxy_glStencilStrokePathNV"

///|
pub fn gl_stencil_stroke_path_nv(
  path : UInt,
  reference : Int,
  mask : UInt,
) -> Unit {
  epoxy_glStencilStrokePathNV(
    d_glStencilStrokePathNV.get(),
    path,
    reference,
    mask,
  )
}

///|
let d_glStencilThenCoverFillPathInstancedNV : Dispatch = Dispatch::new(
  "glStencilThenCoverFillPathInstancedNV",
)

///|
#borrow(paths, transformValues)
extern "c" fn epoxy_glStencilThenCoverFillPathInstancedNV(
  fp : CPtr,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  fillMode : UInt,
  mask : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit = "epoxy_glStencilThenCoverFillPathInstancedNV"

///|
pub fn gl_stencil_then_cover_fill_path_instanced_nv(
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  fillMode : UInt,
  mask : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit {
  epoxy_glStencilThenCoverFillPathInstancedNV(
    d_glStencilThenCoverFillPathInstancedNV.get(),
    numPaths,
    pathNameType,
    paths,
    pathBase,
    fillMode,
    mask,
    coverMode,
    transformType,
    transformValues,
  )
}

///|
let d_glStencilThenCoverFillPathNV : Dispatch = Dispatch::new(
  "glStencilThenCoverFillPathNV",
)

///|
extern "c" fn epoxy_glStencilThenCoverFillPathNV(
  fp : CPtr,
  path : UInt,
  fillMode : UInt,
  mask : UInt,
  coverMode : UInt,
) -> Unit = "epoxy_glStencilThenCoverFillPathNV"

///|
pub fn gl_stencil_then_cover_fill_path_nv(
  path : UInt,
  fillMode : UInt,
  mask : UInt,
  coverMode : UInt,
) -> Unit {
  epoxy_glStencilThenCoverFillPathNV(
    d_glStencilThenCoverFillPathNV.get(),
    path,
    fillMode,
    mask,
    coverMode,
  )
}

///|
let d_glStencilThenCoverStrokePathInstancedNV : Dispatch = Dispatch::new(
  "glStencilThenCoverStrokePathInstancedNV",
)

///|
#borrow(paths, transformValues)
extern "c" fn epoxy_glStencilThenCoverStrokePathInstancedNV(
  fp : CPtr,
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  reference : Int,
  mask : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit = "epoxy_glStencilThenCoverStrokePathInstancedNV"

///|
pub fn gl_stencil_then_cover_stroke_path_instanced_nv(
  numPaths : Int,
  pathNameType : UInt,
  paths : Bytes,
  pathBase : UInt,
  reference : Int,
  mask : UInt,
  coverMode : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit {
  epoxy_glStencilThenCoverStrokePathInstancedNV(
    d_glStencilThenCoverStrokePathInstancedNV.get(),
    numPaths,
    pathNameType,
    paths,
    pathBase,
    reference,
    mask,
    coverMode,
    transformType,
    transformValues,
  )
}

///|
let d_glStencilThenCoverStrokePathNV : Dispatch = Dispatch::new(
  "glStencilThenCoverStrokePathNV",
)

///|
extern "c" fn epoxy_glStencilThenCoverStrokePathNV(
  fp : CPtr,
  path : UInt,
  reference : Int,
  mask : UInt,
  coverMode : UInt,
) -> Unit = "epoxy_glStencilThenCoverStrokePathNV"

///|
pub fn gl_stencil_then_cover_stroke_path_nv(
  path : UInt,
  reference : Int,
  mask : UInt,
  coverMode : UInt,
) -> Unit {
  epoxy_glStencilThenCoverStrokePathNV(
    d_glStencilThenCoverStrokePathNV.get(),
    path,
    reference,
    mask,
    coverMode,
  )
}

///|
let d_glStopInstrumentsSGIX : Dispatch = Dispatch::new("glStopInstrumentsSGIX")

///|
extern "c" fn epoxy_glStopInstrumentsSGIX(fp : CPtr, marker : Int) -> Unit = "epoxy_glStopInstrumentsSGIX"

///|
pub fn gl_stop_instruments_sgix(marker : Int) -> Unit {
  epoxy_glStopInstrumentsSGIX(d_glStopInstrumentsSGIX.get(), marker)
}

///|
let d_glStringMarkerGREMEDY : Dispatch = Dispatch::new("glStringMarkerGREMEDY")

///|
#borrow(string)
extern "c" fn epoxy_glStringMarkerGREMEDY(
  fp : CPtr,
  len : Int,
  string : Bytes,
) -> Unit = "epoxy_glStringMarkerGREMEDY"

///|
pub fn gl_string_marker_gremedy(len : Int, string : Bytes) -> Unit {
  epoxy_glStringMarkerGREMEDY(d_glStringMarkerGREMEDY.get(), len, string)
}

///|
let d_glSubpixelPrecisionBiasNV : Dispatch = Dispatch::new(
  "glSubpixelPrecisionBiasNV",
)

///|
extern "c" fn epoxy_glSubpixelPrecisionBiasNV(
  fp : CPtr,
  xbits : UInt,
  ybits : UInt,
) -> Unit = "epoxy_glSubpixelPrecisionBiasNV"

///|
pub fn gl_subpixel_precision_bias_nv(xbits : UInt, ybits : UInt) -> Unit {
  epoxy_glSubpixelPrecisionBiasNV(
    d_glSubpixelPrecisionBiasNV.get(),
    xbits,
    ybits,
  )
}

///|
let d_glSwizzleEXT : Dispatch = Dispatch::new("glSwizzleEXT")

///|
extern "c" fn epoxy_glSwizzleEXT(
  fp : CPtr,
  res : UInt,
  in_ : UInt,
  outX : UInt,
  outY : UInt,
  outZ : UInt,
  outW : UInt,
) -> Unit = "epoxy_glSwizzleEXT"

///|
pub fn gl_swizzle_ext(
  res : UInt,
  in_ : UInt,
  outX : UInt,
  outY : UInt,
  outZ : UInt,
  outW : UInt,
) -> Unit {
  epoxy_glSwizzleEXT(d_glSwizzleEXT.get(), res, in_, outX, outY, outZ, outW)
}

///|
let d_glSyncTextureINTEL : Dispatch = Dispatch::new("glSyncTextureINTEL")

///|
extern "c" fn epoxy_glSyncTextureINTEL(fp : CPtr, texture : UInt) -> Unit = "epoxy_glSyncTextureINTEL"

///|
pub fn gl_sync_texture_intel(texture : UInt) -> Unit {
  epoxy_glSyncTextureINTEL(d_glSyncTextureINTEL.get(), texture)
}

///|
let d_glTagSampleBufferSGIX : Dispatch = Dispatch::new("glTagSampleBufferSGIX")

///|
extern "c" fn epoxy_glTagSampleBufferSGIX(fp : CPtr) -> Unit = "epoxy_glTagSampleBufferSGIX"

///|
pub fn gl_tag_sample_buffer_sgix() -> Unit {
  epoxy_glTagSampleBufferSGIX(d_glTagSampleBufferSGIX.get())
}

///|
let d_glTangent3bEXT : Dispatch = Dispatch::new("glTangent3bEXT")

///|
extern "c" fn epoxy_glTangent3bEXT(
  fp : CPtr,
  tx : Int,
  ty : Int,
  tz : Int,
) -> Unit = "epoxy_glTangent3bEXT"

///|
pub fn gl_tangent3b_ext(tx : Int, ty : Int, tz : Int) -> Unit {
  epoxy_glTangent3bEXT(d_glTangent3bEXT.get(), tx, ty, tz)
}

///|
let d_glTangent3bvEXT : Dispatch = Dispatch::new("glTangent3bvEXT")

///|
#borrow(v)
extern "c" fn epoxy_glTangent3bvEXT(fp : CPtr, v : Bytes) -> Unit = "epoxy_glTangent3bvEXT"

///|
pub fn gl_tangent3bv_ext(v : Bytes) -> Unit {
  epoxy_glTangent3bvEXT(d_glTangent3bvEXT.get(), v)
}

///|
let d_glTangent3dEXT : Dispatch = Dispatch::new("glTangent3dEXT")

///|
extern "c" fn epoxy_glTangent3dEXT(
  fp : CPtr,
  tx : Double,
  ty : Double,
  tz : Double,
) -> Unit = "epoxy_glTangent3dEXT"

///|
pub fn gl_tangent3d_ext(tx : Double, ty : Double, tz : Double) -> Unit {
  epoxy_glTangent3dEXT(d_glTangent3dEXT.get(), tx, ty, tz)
}

///|
let d_glTangent3dvEXT : Dispatch = Dispatch::new("glTangent3dvEXT")

///|
#borrow(v)
extern "c" fn epoxy_glTangent3dvEXT(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glTangent3dvEXT"

///|
pub fn gl_tangent3dv_ext(v : FixedArray[Double]) -> Unit {
  epoxy_glTangent3dvEXT(d_glTangent3dvEXT.get(), v)
}

///|
let d_glTangent3fEXT : Dispatch = Dispatch::new("glTangent3fEXT")

///|
extern "c" fn epoxy_glTangent3fEXT(
  fp : CPtr,
  tx : Float,
  ty : Float,
  tz : Float,
) -> Unit = "epoxy_glTangent3fEXT"

///|
pub fn gl_tangent3f_ext(tx : Float, ty : Float, tz : Float) -> Unit {
  epoxy_glTangent3fEXT(d_glTangent3fEXT.get(), tx, ty, tz)
}

///|
let d_glTangent3fvEXT : Dispatch = Dispatch::new("glTangent3fvEXT")

///|
#borrow(v)
extern "c" fn epoxy_glTangent3fvEXT(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glTangent3fvEXT"

///|
pub fn gl_tangent3fv_ext(v : FixedArray[Float]) -> Unit {
  epoxy_glTangent3fvEXT(d_glTangent3fvEXT.get(), v)
}

///|
let d_glTangent3iEXT : Dispatch = Dispatch::new("glTangent3iEXT")

///|
extern "c" fn epoxy_glTangent3iEXT(
  fp : CPtr,
  tx : Int,
  ty : Int,
  tz : Int,
) -> Unit = "epoxy_glTangent3iEXT"

///|
pub fn gl_tangent3i_ext(tx : Int, ty : Int, tz : Int) -> Unit {
  epoxy_glTangent3iEXT(d_glTangent3iEXT.get(), tx, ty, tz)
}

///|
let d_glTangent3ivEXT : Dispatch = Dispatch::new("glTangent3ivEXT")

///|
#borrow(v)
extern "c" fn epoxy_glTangent3ivEXT(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glTangent3ivEXT"

///|
pub fn gl_tangent3iv_ext(v : FixedArray[Int]) -> Unit {
  epoxy_glTangent3ivEXT(d_glTangent3ivEXT.get(), v)
}

///|
let d_glTangent3sEXT : Dispatch = Dispatch::new("glTangent3sEXT")

///|
extern "c" fn epoxy_glTangent3sEXT(
  fp : CPtr,
  tx : Int,
  ty : Int,
  tz : Int,
) -> Unit = "epoxy_glTangent3sEXT"

///|
pub fn gl_tangent3s_ext(tx : Int, ty : Int, tz : Int) -> Unit {
  epoxy_glTangent3sEXT(d_glTangent3sEXT.get(), tx, ty, tz)
}

///|
let d_glTangent3svEXT : Dispatch = Dispatch::new("glTangent3svEXT")

///|
#borrow(v)
extern "c" fn epoxy_glTangent3svEXT(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glTangent3svEXT"

///|
pub fn gl_tangent3sv_ext(v : FixedArray[Int16]) -> Unit {
  epoxy_glTangent3svEXT(d_glTangent3svEXT.get(), v)
}

///|
let d_glTangentPointerEXT : Dispatch = Dispatch::new("glTangentPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glTangentPointerEXT(
  fp : CPtr,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glTangentPointerEXT"

///|
pub fn gl_tangent_pointer_ext(
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glTangentPointerEXT(d_glTangentPointerEXT.get(), type_, stride, pointer)
}

///|
let d_glTbufferMask3DFX : Dispatch = Dispatch::new("glTbufferMask3DFX")

///|
extern "c" fn epoxy_glTbufferMask3DFX(fp : CPtr, mask : UInt) -> Unit = "epoxy_glTbufferMask3DFX"

///|
pub fn gl_tbuffer_mask3_dfx(mask : UInt) -> Unit {
  epoxy_glTbufferMask3DFX(d_glTbufferMask3DFX.get(), mask)
}

///|
let d_glTessellationFactorAMD : Dispatch = Dispatch::new(
  "glTessellationFactorAMD",
)

///|
extern "c" fn epoxy_glTessellationFactorAMD(fp : CPtr, factor : Float) -> Unit = "epoxy_glTessellationFactorAMD"

///|
pub fn gl_tessellation_factor_amd(factor : Float) -> Unit {
  epoxy_glTessellationFactorAMD(d_glTessellationFactorAMD.get(), factor)
}

///|
let d_glTessellationModeAMD : Dispatch = Dispatch::new("glTessellationModeAMD")

///|
extern "c" fn epoxy_glTessellationModeAMD(fp : CPtr, mode : UInt) -> Unit = "epoxy_glTessellationModeAMD"

///|
pub fn gl_tessellation_mode_amd(mode : UInt) -> Unit {
  epoxy_glTessellationModeAMD(d_glTessellationModeAMD.get(), mode)
}

///|
let d_glTestFenceAPPLE : Dispatch = Dispatch::new("glTestFenceAPPLE")

///|
extern "c" fn epoxy_glTestFenceAPPLE(fp : CPtr, fence : UInt) -> Bool = "epoxy_glTestFenceAPPLE"

///|
pub fn gl_test_fence_apple(fence : UInt) -> Bool {
  epoxy_glTestFenceAPPLE(d_glTestFenceAPPLE.get(), fence)
}

///|
let d_glTestFenceNV : Dispatch = Dispatch::new("glTestFenceNV")

///|
extern "c" fn epoxy_glTestFenceNV(fp : CPtr, fence : UInt) -> Bool = "epoxy_glTestFenceNV"

///|
pub fn gl_test_fence_nv(fence : UInt) -> Bool {
  epoxy_glTestFenceNV(d_glTestFenceNV.get(), fence)
}

///|
let d_glTestObjectAPPLE : Dispatch = Dispatch::new("glTestObjectAPPLE")

///|
extern "c" fn epoxy_glTestObjectAPPLE(
  fp : CPtr,
  object : UInt,
  name : UInt,
) -> Bool = "epoxy_glTestObjectAPPLE"

///|
pub fn gl_test_object_apple(object : UInt, name : UInt) -> Bool {
  epoxy_glTestObjectAPPLE(d_glTestObjectAPPLE.get(), object, name)
}

///|
let d_glTexAttachMemoryNV : Dispatch = Dispatch::new("glTexAttachMemoryNV")

///|
extern "c" fn epoxy_glTexAttachMemoryNV(
  fp : CPtr,
  target : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTexAttachMemoryNV"

///|
pub fn gl_tex_attach_memory_nv(
  target : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTexAttachMemoryNV(d_glTexAttachMemoryNV.get(), target, memory, offset)
}

///|
let d_glTexBuffer : Dispatch = Dispatch::with_aliases("glTexBuffer", [
  "glTexBufferARB", "glTexBufferEXT", "glTexBufferOES",
])

///|
extern "c" fn epoxy_glTexBuffer(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glTexBuffer"

///|
pub fn gl_tex_buffer(
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glTexBuffer(d_glTexBuffer.get(), target, internalformat, buffer)
}

///|
let d_glTexBufferARB : Dispatch = Dispatch::with_aliases("glTexBufferARB", [
  "glTexBuffer", "glTexBufferEXT", "glTexBufferOES",
])

///|
extern "c" fn epoxy_glTexBufferARB(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glTexBufferARB"

///|
pub fn gl_tex_buffer_arb(
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glTexBufferARB(d_glTexBufferARB.get(), target, internalformat, buffer)
}

///|
let d_glTexBufferEXT : Dispatch = Dispatch::with_aliases("glTexBufferEXT", [
  "glTexBuffer", "glTexBufferARB", "glTexBufferOES",
])

///|
extern "c" fn epoxy_glTexBufferEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glTexBufferEXT"

///|
pub fn gl_tex_buffer_ext(
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glTexBufferEXT(d_glTexBufferEXT.get(), target, internalformat, buffer)
}

///|
let d_glTexBufferOES : Dispatch = Dispatch::with_aliases("glTexBufferOES", [
  "glTexBuffer", "glTexBufferARB", "glTexBufferEXT",
])

///|
extern "c" fn epoxy_glTexBufferOES(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glTexBufferOES"

///|
pub fn gl_tex_buffer_oes(
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glTexBufferOES(d_glTexBufferOES.get(), target, internalformat, buffer)
}

///|
let d_glTexBufferRange : Dispatch = Dispatch::with_aliases("glTexBufferRange", [
  "glTexBufferRangeEXT", "glTexBufferRangeOES",
])

///|
extern "c" fn epoxy_glTexBufferRange(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glTexBufferRange"

///|
pub fn gl_tex_buffer_range(
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glTexBufferRange(
    d_glTexBufferRange.get(),
    target,
    internalformat,
    buffer,
    offset,
    size,
  )
}

///|
let d_glTexBufferRangeEXT : Dispatch = Dispatch::with_aliases(
  "glTexBufferRangeEXT",
  ["glTexBufferRange", "glTexBufferRangeOES"],
)

///|
extern "c" fn epoxy_glTexBufferRangeEXT(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glTexBufferRangeEXT"

///|
pub fn gl_tex_buffer_range_ext(
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glTexBufferRangeEXT(
    d_glTexBufferRangeEXT.get(),
    target,
    internalformat,
    buffer,
    offset,
    size,
  )
}

///|
let d_glTexBufferRangeOES : Dispatch = Dispatch::with_aliases(
  "glTexBufferRangeOES",
  ["glTexBufferRange", "glTexBufferRangeEXT"],
)

///|
extern "c" fn epoxy_glTexBufferRangeOES(
  fp : CPtr,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glTexBufferRangeOES"

///|
pub fn gl_tex_buffer_range_oes(
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glTexBufferRangeOES(
    d_glTexBufferRangeOES.get(),
    target,
    internalformat,
    buffer,
    offset,
    size,
  )
}

///|
let d_glTexBumpParameterfvATI : Dispatch = Dispatch::new(
  "glTexBumpParameterfvATI",
)

///|
#borrow(param)
extern "c" fn epoxy_glTexBumpParameterfvATI(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Float],
) -> Unit = "epoxy_glTexBumpParameterfvATI"

///|
pub fn gl_tex_bump_parameterfv_ati(
  pname : UInt,
  param : FixedArray[Float],
) -> Unit {
  epoxy_glTexBumpParameterfvATI(d_glTexBumpParameterfvATI.get(), pname, param)
}

///|
let d_glTexBumpParameterivATI : Dispatch = Dispatch::new(
  "glTexBumpParameterivATI",
)

///|
#borrow(param)
extern "c" fn epoxy_glTexBumpParameterivATI(
  fp : CPtr,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glTexBumpParameterivATI"

///|
pub fn gl_tex_bump_parameteriv_ati(
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glTexBumpParameterivATI(d_glTexBumpParameterivATI.get(), pname, param)
}

///|
let d_glTexCoord1bOES : Dispatch = Dispatch::new("glTexCoord1bOES")

///|
extern "c" fn epoxy_glTexCoord1bOES(fp : CPtr, s : Int) -> Unit = "epoxy_glTexCoord1bOES"

///|
pub fn gl_tex_coord1b_oes(s : Int) -> Unit {
  epoxy_glTexCoord1bOES(d_glTexCoord1bOES.get(), s)
}

///|
let d_glTexCoord1bvOES : Dispatch = Dispatch::new("glTexCoord1bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord1bvOES(fp : CPtr, coords : Bytes) -> Unit = "epoxy_glTexCoord1bvOES"

///|
pub fn gl_tex_coord1bv_oes(coords : Bytes) -> Unit {
  epoxy_glTexCoord1bvOES(d_glTexCoord1bvOES.get(), coords)
}

///|
let d_glTexCoord1d : Dispatch = Dispatch::new("glTexCoord1d")

///|
extern "c" fn epoxy_glTexCoord1d(fp : CPtr, s : Double) -> Unit = "epoxy_glTexCoord1d"

///|
pub fn gl_tex_coord1d(s : Double) -> Unit {
  epoxy_glTexCoord1d(d_glTexCoord1d.get(), s)
}

///|
let d_glTexCoord1dv : Dispatch = Dispatch::new("glTexCoord1dv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord1dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glTexCoord1dv"

///|
pub fn gl_tex_coord1dv(v : FixedArray[Double]) -> Unit {
  epoxy_glTexCoord1dv(d_glTexCoord1dv.get(), v)
}

///|
let d_glTexCoord1f : Dispatch = Dispatch::new("glTexCoord1f")

///|
extern "c" fn epoxy_glTexCoord1f(fp : CPtr, s : Float) -> Unit = "epoxy_glTexCoord1f"

///|
pub fn gl_tex_coord1f(s : Float) -> Unit {
  epoxy_glTexCoord1f(d_glTexCoord1f.get(), s)
}

///|
let d_glTexCoord1fv : Dispatch = Dispatch::new("glTexCoord1fv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord1fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glTexCoord1fv"

///|
pub fn gl_tex_coord1fv(v : FixedArray[Float]) -> Unit {
  epoxy_glTexCoord1fv(d_glTexCoord1fv.get(), v)
}

///|
let d_glTexCoord1hNV : Dispatch = Dispatch::new("glTexCoord1hNV")

///|
extern "c" fn epoxy_glTexCoord1hNV(fp : CPtr, s : Int) -> Unit = "epoxy_glTexCoord1hNV"

///|
pub fn gl_tex_coord1h_nv(s : Int) -> Unit {
  epoxy_glTexCoord1hNV(d_glTexCoord1hNV.get(), s)
}

///|
let d_glTexCoord1hvNV : Dispatch = Dispatch::new("glTexCoord1hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord1hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glTexCoord1hvNV"

///|
pub fn gl_tex_coord1hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glTexCoord1hvNV(d_glTexCoord1hvNV.get(), v)
}

///|
let d_glTexCoord1i : Dispatch = Dispatch::new("glTexCoord1i")

///|
extern "c" fn epoxy_glTexCoord1i(fp : CPtr, s : Int) -> Unit = "epoxy_glTexCoord1i"

///|
pub fn gl_tex_coord1i(s : Int) -> Unit {
  epoxy_glTexCoord1i(d_glTexCoord1i.get(), s)
}

///|
let d_glTexCoord1iv : Dispatch = Dispatch::new("glTexCoord1iv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord1iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glTexCoord1iv"

///|
pub fn gl_tex_coord1iv(v : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord1iv(d_glTexCoord1iv.get(), v)
}

///|
let d_glTexCoord1s : Dispatch = Dispatch::new("glTexCoord1s")

///|
extern "c" fn epoxy_glTexCoord1s(fp : CPtr, s : Int) -> Unit = "epoxy_glTexCoord1s"

///|
pub fn gl_tex_coord1s(s : Int) -> Unit {
  epoxy_glTexCoord1s(d_glTexCoord1s.get(), s)
}

///|
let d_glTexCoord1sv : Dispatch = Dispatch::new("glTexCoord1sv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord1sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glTexCoord1sv"

///|
pub fn gl_tex_coord1sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glTexCoord1sv(d_glTexCoord1sv.get(), v)
}

///|
let d_glTexCoord1xOES : Dispatch = Dispatch::new("glTexCoord1xOES")

///|
extern "c" fn epoxy_glTexCoord1xOES(fp : CPtr, s : Int) -> Unit = "epoxy_glTexCoord1xOES"

///|
pub fn gl_tex_coord1x_oes(s : Int) -> Unit {
  epoxy_glTexCoord1xOES(d_glTexCoord1xOES.get(), s)
}

///|
let d_glTexCoord1xvOES : Dispatch = Dispatch::new("glTexCoord1xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord1xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glTexCoord1xvOES"

///|
pub fn gl_tex_coord1xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord1xvOES(d_glTexCoord1xvOES.get(), coords)
}

///|
let d_glTexCoord2bOES : Dispatch = Dispatch::new("glTexCoord2bOES")

///|
extern "c" fn epoxy_glTexCoord2bOES(fp : CPtr, s : Int, t : Int) -> Unit = "epoxy_glTexCoord2bOES"

///|
pub fn gl_tex_coord2b_oes(s : Int, t : Int) -> Unit {
  epoxy_glTexCoord2bOES(d_glTexCoord2bOES.get(), s, t)
}

///|
let d_glTexCoord2bvOES : Dispatch = Dispatch::new("glTexCoord2bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord2bvOES(fp : CPtr, coords : Bytes) -> Unit = "epoxy_glTexCoord2bvOES"

///|
pub fn gl_tex_coord2bv_oes(coords : Bytes) -> Unit {
  epoxy_glTexCoord2bvOES(d_glTexCoord2bvOES.get(), coords)
}

///|
let d_glTexCoord2d : Dispatch = Dispatch::new("glTexCoord2d")

///|
extern "c" fn epoxy_glTexCoord2d(fp : CPtr, s : Double, t : Double) -> Unit = "epoxy_glTexCoord2d"

///|
pub fn gl_tex_coord2d(s : Double, t : Double) -> Unit {
  epoxy_glTexCoord2d(d_glTexCoord2d.get(), s, t)
}

///|
let d_glTexCoord2dv : Dispatch = Dispatch::new("glTexCoord2dv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord2dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glTexCoord2dv"

///|
pub fn gl_tex_coord2dv(v : FixedArray[Double]) -> Unit {
  epoxy_glTexCoord2dv(d_glTexCoord2dv.get(), v)
}

///|
let d_glTexCoord2f : Dispatch = Dispatch::new("glTexCoord2f")

///|
extern "c" fn epoxy_glTexCoord2f(fp : CPtr, s : Float, t : Float) -> Unit = "epoxy_glTexCoord2f"

///|
pub fn gl_tex_coord2f(s : Float, t : Float) -> Unit {
  epoxy_glTexCoord2f(d_glTexCoord2f.get(), s, t)
}

///|
let d_glTexCoord2fColor3fVertex3fSUN : Dispatch = Dispatch::new(
  "glTexCoord2fColor3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glTexCoord2fColor3fVertex3fSUN(
  fp : CPtr,
  s : Float,
  t : Float,
  r : Float,
  g : Float,
  b : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glTexCoord2fColor3fVertex3fSUN"

///|
pub fn gl_tex_coord2f_color3f_vertex3f_sun(
  s : Float,
  t : Float,
  r : Float,
  g : Float,
  b : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glTexCoord2fColor3fVertex3fSUN(
    d_glTexCoord2fColor3fVertex3fSUN.get(),
    s,
    t,
    r,
    g,
    b,
    x,
    y,
    z,
  )
}

///|
let d_glTexCoord2fColor3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glTexCoord2fColor3fVertex3fvSUN",
)

///|
#borrow(tc, c, v)
extern "c" fn epoxy_glTexCoord2fColor3fVertex3fvSUN(
  fp : CPtr,
  tc : FixedArray[Float],
  c : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glTexCoord2fColor3fVertex3fvSUN"

///|
pub fn gl_tex_coord2f_color3f_vertex3fv_sun(
  tc : FixedArray[Float],
  c : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glTexCoord2fColor3fVertex3fvSUN(
    d_glTexCoord2fColor3fVertex3fvSUN.get(),
    tc,
    c,
    v,
  )
}

///|
let d_glTexCoord2fColor4fNormal3fVertex3fSUN : Dispatch = Dispatch::new(
  "glTexCoord2fColor4fNormal3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glTexCoord2fColor4fNormal3fVertex3fSUN(
  fp : CPtr,
  s : Float,
  t : Float,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glTexCoord2fColor4fNormal3fVertex3fSUN"

///|
pub fn gl_tex_coord2f_color4f_normal3f_vertex3f_sun(
  s : Float,
  t : Float,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glTexCoord2fColor4fNormal3fVertex3fSUN(
    d_glTexCoord2fColor4fNormal3fVertex3fSUN.get(),
    s,
    t,
    r,
    g,
    b,
    a,
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glTexCoord2fColor4fNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glTexCoord2fColor4fNormal3fVertex3fvSUN",
)

///|
#borrow(tc, c, n, v)
extern "c" fn epoxy_glTexCoord2fColor4fNormal3fVertex3fvSUN(
  fp : CPtr,
  tc : FixedArray[Float],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glTexCoord2fColor4fNormal3fVertex3fvSUN"

///|
pub fn gl_tex_coord2f_color4f_normal3f_vertex3fv_sun(
  tc : FixedArray[Float],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glTexCoord2fColor4fNormal3fVertex3fvSUN(
    d_glTexCoord2fColor4fNormal3fVertex3fvSUN.get(),
    tc,
    c,
    n,
    v,
  )
}

///|
let d_glTexCoord2fColor4ubVertex3fSUN : Dispatch = Dispatch::new(
  "glTexCoord2fColor4ubVertex3fSUN",
)

///|
extern "c" fn epoxy_glTexCoord2fColor4ubVertex3fSUN(
  fp : CPtr,
  s : Float,
  t : Float,
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glTexCoord2fColor4ubVertex3fSUN"

///|
pub fn gl_tex_coord2f_color4ub_vertex3f_sun(
  s : Float,
  t : Float,
  r : Int,
  g : Int,
  b : Int,
  a : Int,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glTexCoord2fColor4ubVertex3fSUN(
    d_glTexCoord2fColor4ubVertex3fSUN.get(),
    s,
    t,
    r,
    g,
    b,
    a,
    x,
    y,
    z,
  )
}

///|
let d_glTexCoord2fColor4ubVertex3fvSUN : Dispatch = Dispatch::new(
  "glTexCoord2fColor4ubVertex3fvSUN",
)

///|
#borrow(tc, c, v)
extern "c" fn epoxy_glTexCoord2fColor4ubVertex3fvSUN(
  fp : CPtr,
  tc : FixedArray[Float],
  c : Bytes,
  v : FixedArray[Float],
) -> Unit = "epoxy_glTexCoord2fColor4ubVertex3fvSUN"

///|
pub fn gl_tex_coord2f_color4ub_vertex3fv_sun(
  tc : FixedArray[Float],
  c : Bytes,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glTexCoord2fColor4ubVertex3fvSUN(
    d_glTexCoord2fColor4ubVertex3fvSUN.get(),
    tc,
    c,
    v,
  )
}

///|
let d_glTexCoord2fNormal3fVertex3fSUN : Dispatch = Dispatch::new(
  "glTexCoord2fNormal3fVertex3fSUN",
)

///|
extern "c" fn epoxy_glTexCoord2fNormal3fVertex3fSUN(
  fp : CPtr,
  s : Float,
  t : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glTexCoord2fNormal3fVertex3fSUN"

///|
pub fn gl_tex_coord2f_normal3f_vertex3f_sun(
  s : Float,
  t : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glTexCoord2fNormal3fVertex3fSUN(
    d_glTexCoord2fNormal3fVertex3fSUN.get(),
    s,
    t,
    nx,
    ny,
    nz,
    x,
    y,
    z,
  )
}

///|
let d_glTexCoord2fNormal3fVertex3fvSUN : Dispatch = Dispatch::new(
  "glTexCoord2fNormal3fVertex3fvSUN",
)

///|
#borrow(tc, n, v)
extern "c" fn epoxy_glTexCoord2fNormal3fVertex3fvSUN(
  fp : CPtr,
  tc : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glTexCoord2fNormal3fVertex3fvSUN"

///|
pub fn gl_tex_coord2f_normal3f_vertex3fv_sun(
  tc : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glTexCoord2fNormal3fVertex3fvSUN(
    d_glTexCoord2fNormal3fVertex3fvSUN.get(),
    tc,
    n,
    v,
  )
}

///|
let d_glTexCoord2fVertex3fSUN : Dispatch = Dispatch::new(
  "glTexCoord2fVertex3fSUN",
)

///|
extern "c" fn epoxy_glTexCoord2fVertex3fSUN(
  fp : CPtr,
  s : Float,
  t : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glTexCoord2fVertex3fSUN"

///|
pub fn gl_tex_coord2f_vertex3f_sun(
  s : Float,
  t : Float,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glTexCoord2fVertex3fSUN(d_glTexCoord2fVertex3fSUN.get(), s, t, x, y, z)
}

///|
let d_glTexCoord2fVertex3fvSUN : Dispatch = Dispatch::new(
  "glTexCoord2fVertex3fvSUN",
)

///|
#borrow(tc, v)
extern "c" fn epoxy_glTexCoord2fVertex3fvSUN(
  fp : CPtr,
  tc : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glTexCoord2fVertex3fvSUN"

///|
pub fn gl_tex_coord2f_vertex3fv_sun(
  tc : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glTexCoord2fVertex3fvSUN(d_glTexCoord2fVertex3fvSUN.get(), tc, v)
}

///|
let d_glTexCoord2fv : Dispatch = Dispatch::new("glTexCoord2fv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord2fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glTexCoord2fv"

///|
pub fn gl_tex_coord2fv(v : FixedArray[Float]) -> Unit {
  epoxy_glTexCoord2fv(d_glTexCoord2fv.get(), v)
}

///|
let d_glTexCoord2hNV : Dispatch = Dispatch::new("glTexCoord2hNV")

///|
extern "c" fn epoxy_glTexCoord2hNV(fp : CPtr, s : Int, t : Int) -> Unit = "epoxy_glTexCoord2hNV"

///|
pub fn gl_tex_coord2h_nv(s : Int, t : Int) -> Unit {
  epoxy_glTexCoord2hNV(d_glTexCoord2hNV.get(), s, t)
}

///|
let d_glTexCoord2hvNV : Dispatch = Dispatch::new("glTexCoord2hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord2hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glTexCoord2hvNV"

///|
pub fn gl_tex_coord2hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glTexCoord2hvNV(d_glTexCoord2hvNV.get(), v)
}

///|
let d_glTexCoord2i : Dispatch = Dispatch::new("glTexCoord2i")

///|
extern "c" fn epoxy_glTexCoord2i(fp : CPtr, s : Int, t : Int) -> Unit = "epoxy_glTexCoord2i"

///|
pub fn gl_tex_coord2i(s : Int, t : Int) -> Unit {
  epoxy_glTexCoord2i(d_glTexCoord2i.get(), s, t)
}

///|
let d_glTexCoord2iv : Dispatch = Dispatch::new("glTexCoord2iv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord2iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glTexCoord2iv"

///|
pub fn gl_tex_coord2iv(v : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord2iv(d_glTexCoord2iv.get(), v)
}

///|
let d_glTexCoord2s : Dispatch = Dispatch::new("glTexCoord2s")

///|
extern "c" fn epoxy_glTexCoord2s(fp : CPtr, s : Int, t : Int) -> Unit = "epoxy_glTexCoord2s"

///|
pub fn gl_tex_coord2s(s : Int, t : Int) -> Unit {
  epoxy_glTexCoord2s(d_glTexCoord2s.get(), s, t)
}

///|
let d_glTexCoord2sv : Dispatch = Dispatch::new("glTexCoord2sv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord2sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glTexCoord2sv"

///|
pub fn gl_tex_coord2sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glTexCoord2sv(d_glTexCoord2sv.get(), v)
}

///|
let d_glTexCoord2xOES : Dispatch = Dispatch::new("glTexCoord2xOES")

///|
extern "c" fn epoxy_glTexCoord2xOES(fp : CPtr, s : Int, t : Int) -> Unit = "epoxy_glTexCoord2xOES"

///|
pub fn gl_tex_coord2x_oes(s : Int, t : Int) -> Unit {
  epoxy_glTexCoord2xOES(d_glTexCoord2xOES.get(), s, t)
}

///|
let d_glTexCoord2xvOES : Dispatch = Dispatch::new("glTexCoord2xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord2xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glTexCoord2xvOES"

///|
pub fn gl_tex_coord2xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord2xvOES(d_glTexCoord2xvOES.get(), coords)
}

///|
let d_glTexCoord3bOES : Dispatch = Dispatch::new("glTexCoord3bOES")

///|
extern "c" fn epoxy_glTexCoord3bOES(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glTexCoord3bOES"

///|
pub fn gl_tex_coord3b_oes(s : Int, t : Int, r : Int) -> Unit {
  epoxy_glTexCoord3bOES(d_glTexCoord3bOES.get(), s, t, r)
}

///|
let d_glTexCoord3bvOES : Dispatch = Dispatch::new("glTexCoord3bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord3bvOES(fp : CPtr, coords : Bytes) -> Unit = "epoxy_glTexCoord3bvOES"

///|
pub fn gl_tex_coord3bv_oes(coords : Bytes) -> Unit {
  epoxy_glTexCoord3bvOES(d_glTexCoord3bvOES.get(), coords)
}

///|
let d_glTexCoord3d : Dispatch = Dispatch::new("glTexCoord3d")

///|
extern "c" fn epoxy_glTexCoord3d(
  fp : CPtr,
  s : Double,
  t : Double,
  r : Double,
) -> Unit = "epoxy_glTexCoord3d"

///|
pub fn gl_tex_coord3d(s : Double, t : Double, r : Double) -> Unit {
  epoxy_glTexCoord3d(d_glTexCoord3d.get(), s, t, r)
}

///|
let d_glTexCoord3dv : Dispatch = Dispatch::new("glTexCoord3dv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord3dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glTexCoord3dv"

///|
pub fn gl_tex_coord3dv(v : FixedArray[Double]) -> Unit {
  epoxy_glTexCoord3dv(d_glTexCoord3dv.get(), v)
}

///|
let d_glTexCoord3f : Dispatch = Dispatch::new("glTexCoord3f")

///|
extern "c" fn epoxy_glTexCoord3f(
  fp : CPtr,
  s : Float,
  t : Float,
  r : Float,
) -> Unit = "epoxy_glTexCoord3f"

///|
pub fn gl_tex_coord3f(s : Float, t : Float, r : Float) -> Unit {
  epoxy_glTexCoord3f(d_glTexCoord3f.get(), s, t, r)
}

///|
let d_glTexCoord3fv : Dispatch = Dispatch::new("glTexCoord3fv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord3fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glTexCoord3fv"

///|
pub fn gl_tex_coord3fv(v : FixedArray[Float]) -> Unit {
  epoxy_glTexCoord3fv(d_glTexCoord3fv.get(), v)
}

///|
let d_glTexCoord3hNV : Dispatch = Dispatch::new("glTexCoord3hNV")

///|
extern "c" fn epoxy_glTexCoord3hNV(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glTexCoord3hNV"

///|
pub fn gl_tex_coord3h_nv(s : Int, t : Int, r : Int) -> Unit {
  epoxy_glTexCoord3hNV(d_glTexCoord3hNV.get(), s, t, r)
}

///|
let d_glTexCoord3hvNV : Dispatch = Dispatch::new("glTexCoord3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord3hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glTexCoord3hvNV"

///|
pub fn gl_tex_coord3hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glTexCoord3hvNV(d_glTexCoord3hvNV.get(), v)
}

///|
let d_glTexCoord3i : Dispatch = Dispatch::new("glTexCoord3i")

///|
extern "c" fn epoxy_glTexCoord3i(fp : CPtr, s : Int, t : Int, r : Int) -> Unit = "epoxy_glTexCoord3i"

///|
pub fn gl_tex_coord3i(s : Int, t : Int, r : Int) -> Unit {
  epoxy_glTexCoord3i(d_glTexCoord3i.get(), s, t, r)
}

///|
let d_glTexCoord3iv : Dispatch = Dispatch::new("glTexCoord3iv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord3iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glTexCoord3iv"

///|
pub fn gl_tex_coord3iv(v : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord3iv(d_glTexCoord3iv.get(), v)
}

///|
let d_glTexCoord3s : Dispatch = Dispatch::new("glTexCoord3s")

///|
extern "c" fn epoxy_glTexCoord3s(fp : CPtr, s : Int, t : Int, r : Int) -> Unit = "epoxy_glTexCoord3s"

///|
pub fn gl_tex_coord3s(s : Int, t : Int, r : Int) -> Unit {
  epoxy_glTexCoord3s(d_glTexCoord3s.get(), s, t, r)
}

///|
let d_glTexCoord3sv : Dispatch = Dispatch::new("glTexCoord3sv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord3sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glTexCoord3sv"

///|
pub fn gl_tex_coord3sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glTexCoord3sv(d_glTexCoord3sv.get(), v)
}

///|
let d_glTexCoord3xOES : Dispatch = Dispatch::new("glTexCoord3xOES")

///|
extern "c" fn epoxy_glTexCoord3xOES(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
) -> Unit = "epoxy_glTexCoord3xOES"

///|
pub fn gl_tex_coord3x_oes(s : Int, t : Int, r : Int) -> Unit {
  epoxy_glTexCoord3xOES(d_glTexCoord3xOES.get(), s, t, r)
}

///|
let d_glTexCoord3xvOES : Dispatch = Dispatch::new("glTexCoord3xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord3xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glTexCoord3xvOES"

///|
pub fn gl_tex_coord3xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord3xvOES(d_glTexCoord3xvOES.get(), coords)
}

///|
let d_glTexCoord4bOES : Dispatch = Dispatch::new("glTexCoord4bOES")

///|
extern "c" fn epoxy_glTexCoord4bOES(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glTexCoord4bOES"

///|
pub fn gl_tex_coord4b_oes(s : Int, t : Int, r : Int, q : Int) -> Unit {
  epoxy_glTexCoord4bOES(d_glTexCoord4bOES.get(), s, t, r, q)
}

///|
let d_glTexCoord4bvOES : Dispatch = Dispatch::new("glTexCoord4bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord4bvOES(fp : CPtr, coords : Bytes) -> Unit = "epoxy_glTexCoord4bvOES"

///|
pub fn gl_tex_coord4bv_oes(coords : Bytes) -> Unit {
  epoxy_glTexCoord4bvOES(d_glTexCoord4bvOES.get(), coords)
}

///|
let d_glTexCoord4d : Dispatch = Dispatch::new("glTexCoord4d")

///|
extern "c" fn epoxy_glTexCoord4d(
  fp : CPtr,
  s : Double,
  t : Double,
  r : Double,
  q : Double,
) -> Unit = "epoxy_glTexCoord4d"

///|
pub fn gl_tex_coord4d(s : Double, t : Double, r : Double, q : Double) -> Unit {
  epoxy_glTexCoord4d(d_glTexCoord4d.get(), s, t, r, q)
}

///|
let d_glTexCoord4dv : Dispatch = Dispatch::new("glTexCoord4dv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord4dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glTexCoord4dv"

///|
pub fn gl_tex_coord4dv(v : FixedArray[Double]) -> Unit {
  epoxy_glTexCoord4dv(d_glTexCoord4dv.get(), v)
}

///|
let d_glTexCoord4f : Dispatch = Dispatch::new("glTexCoord4f")

///|
extern "c" fn epoxy_glTexCoord4f(
  fp : CPtr,
  s : Float,
  t : Float,
  r : Float,
  q : Float,
) -> Unit = "epoxy_glTexCoord4f"

///|
pub fn gl_tex_coord4f(s : Float, t : Float, r : Float, q : Float) -> Unit {
  epoxy_glTexCoord4f(d_glTexCoord4f.get(), s, t, r, q)
}

///|
let d_glTexCoord4fColor4fNormal3fVertex4fSUN : Dispatch = Dispatch::new(
  "glTexCoord4fColor4fNormal3fVertex4fSUN",
)

///|
extern "c" fn epoxy_glTexCoord4fColor4fNormal3fVertex4fSUN(
  fp : CPtr,
  s : Float,
  t : Float,
  p : Float,
  q : Float,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glTexCoord4fColor4fNormal3fVertex4fSUN"

///|
pub fn gl_tex_coord4f_color4f_normal3f_vertex4f_sun(
  s : Float,
  t : Float,
  p : Float,
  q : Float,
  r : Float,
  g : Float,
  b : Float,
  a : Float,
  nx : Float,
  ny : Float,
  nz : Float,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glTexCoord4fColor4fNormal3fVertex4fSUN(
    d_glTexCoord4fColor4fNormal3fVertex4fSUN.get(),
    s,
    t,
    p,
    q,
    r,
    g,
    b,
    a,
    nx,
    ny,
    nz,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glTexCoord4fColor4fNormal3fVertex4fvSUN : Dispatch = Dispatch::new(
  "glTexCoord4fColor4fNormal3fVertex4fvSUN",
)

///|
#borrow(tc, c, n, v)
extern "c" fn epoxy_glTexCoord4fColor4fNormal3fVertex4fvSUN(
  fp : CPtr,
  tc : FixedArray[Float],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glTexCoord4fColor4fNormal3fVertex4fvSUN"

///|
pub fn gl_tex_coord4f_color4f_normal3f_vertex4fv_sun(
  tc : FixedArray[Float],
  c : FixedArray[Float],
  n : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glTexCoord4fColor4fNormal3fVertex4fvSUN(
    d_glTexCoord4fColor4fNormal3fVertex4fvSUN.get(),
    tc,
    c,
    n,
    v,
  )
}

///|
let d_glTexCoord4fVertex4fSUN : Dispatch = Dispatch::new(
  "glTexCoord4fVertex4fSUN",
)

///|
extern "c" fn epoxy_glTexCoord4fVertex4fSUN(
  fp : CPtr,
  s : Float,
  t : Float,
  p : Float,
  q : Float,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glTexCoord4fVertex4fSUN"

///|
pub fn gl_tex_coord4f_vertex4f_sun(
  s : Float,
  t : Float,
  p : Float,
  q : Float,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glTexCoord4fVertex4fSUN(
    d_glTexCoord4fVertex4fSUN.get(),
    s,
    t,
    p,
    q,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glTexCoord4fVertex4fvSUN : Dispatch = Dispatch::new(
  "glTexCoord4fVertex4fvSUN",
)

///|
#borrow(tc, v)
extern "c" fn epoxy_glTexCoord4fVertex4fvSUN(
  fp : CPtr,
  tc : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit = "epoxy_glTexCoord4fVertex4fvSUN"

///|
pub fn gl_tex_coord4f_vertex4fv_sun(
  tc : FixedArray[Float],
  v : FixedArray[Float],
) -> Unit {
  epoxy_glTexCoord4fVertex4fvSUN(d_glTexCoord4fVertex4fvSUN.get(), tc, v)
}

///|
let d_glTexCoord4fv : Dispatch = Dispatch::new("glTexCoord4fv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord4fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glTexCoord4fv"

///|
pub fn gl_tex_coord4fv(v : FixedArray[Float]) -> Unit {
  epoxy_glTexCoord4fv(d_glTexCoord4fv.get(), v)
}

///|
let d_glTexCoord4hNV : Dispatch = Dispatch::new("glTexCoord4hNV")

///|
extern "c" fn epoxy_glTexCoord4hNV(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glTexCoord4hNV"

///|
pub fn gl_tex_coord4h_nv(s : Int, t : Int, r : Int, q : Int) -> Unit {
  epoxy_glTexCoord4hNV(d_glTexCoord4hNV.get(), s, t, r, q)
}

///|
let d_glTexCoord4hvNV : Dispatch = Dispatch::new("glTexCoord4hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord4hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glTexCoord4hvNV"

///|
pub fn gl_tex_coord4hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glTexCoord4hvNV(d_glTexCoord4hvNV.get(), v)
}

///|
let d_glTexCoord4i : Dispatch = Dispatch::new("glTexCoord4i")

///|
extern "c" fn epoxy_glTexCoord4i(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glTexCoord4i"

///|
pub fn gl_tex_coord4i(s : Int, t : Int, r : Int, q : Int) -> Unit {
  epoxy_glTexCoord4i(d_glTexCoord4i.get(), s, t, r, q)
}

///|
let d_glTexCoord4iv : Dispatch = Dispatch::new("glTexCoord4iv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord4iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glTexCoord4iv"

///|
pub fn gl_tex_coord4iv(v : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord4iv(d_glTexCoord4iv.get(), v)
}

///|
let d_glTexCoord4s : Dispatch = Dispatch::new("glTexCoord4s")

///|
extern "c" fn epoxy_glTexCoord4s(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glTexCoord4s"

///|
pub fn gl_tex_coord4s(s : Int, t : Int, r : Int, q : Int) -> Unit {
  epoxy_glTexCoord4s(d_glTexCoord4s.get(), s, t, r, q)
}

///|
let d_glTexCoord4sv : Dispatch = Dispatch::new("glTexCoord4sv")

///|
#borrow(v)
extern "c" fn epoxy_glTexCoord4sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glTexCoord4sv"

///|
pub fn gl_tex_coord4sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glTexCoord4sv(d_glTexCoord4sv.get(), v)
}

///|
let d_glTexCoord4xOES : Dispatch = Dispatch::new("glTexCoord4xOES")

///|
extern "c" fn epoxy_glTexCoord4xOES(
  fp : CPtr,
  s : Int,
  t : Int,
  r : Int,
  q : Int,
) -> Unit = "epoxy_glTexCoord4xOES"

///|
pub fn gl_tex_coord4x_oes(s : Int, t : Int, r : Int, q : Int) -> Unit {
  epoxy_glTexCoord4xOES(d_glTexCoord4xOES.get(), s, t, r, q)
}

///|
let d_glTexCoord4xvOES : Dispatch = Dispatch::new("glTexCoord4xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoord4xvOES(
  fp : CPtr,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glTexCoord4xvOES"

///|
pub fn gl_tex_coord4xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glTexCoord4xvOES(d_glTexCoord4xvOES.get(), coords)
}

///|
let d_glTexCoordFormatNV : Dispatch = Dispatch::new("glTexCoordFormatNV")

///|
extern "c" fn epoxy_glTexCoordFormatNV(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glTexCoordFormatNV"

///|
pub fn gl_tex_coord_format_nv(size : Int, type_ : UInt, stride : Int) -> Unit {
  epoxy_glTexCoordFormatNV(d_glTexCoordFormatNV.get(), size, type_, stride)
}

///|
let d_glTexCoordP1ui : Dispatch = Dispatch::new("glTexCoordP1ui")

///|
extern "c" fn epoxy_glTexCoordP1ui(
  fp : CPtr,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glTexCoordP1ui"

///|
pub fn gl_tex_coord_p1ui(type_ : UInt, coords : UInt) -> Unit {
  epoxy_glTexCoordP1ui(d_glTexCoordP1ui.get(), type_, coords)
}

///|
let d_glTexCoordP1uiv : Dispatch = Dispatch::new("glTexCoordP1uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoordP1uiv(
  fp : CPtr,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glTexCoordP1uiv"

///|
pub fn gl_tex_coord_p1uiv(type_ : UInt, coords : FixedArray[UInt]) -> Unit {
  epoxy_glTexCoordP1uiv(d_glTexCoordP1uiv.get(), type_, coords)
}

///|
let d_glTexCoordP2ui : Dispatch = Dispatch::new("glTexCoordP2ui")

///|
extern "c" fn epoxy_glTexCoordP2ui(
  fp : CPtr,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glTexCoordP2ui"

///|
pub fn gl_tex_coord_p2ui(type_ : UInt, coords : UInt) -> Unit {
  epoxy_glTexCoordP2ui(d_glTexCoordP2ui.get(), type_, coords)
}

///|
let d_glTexCoordP2uiv : Dispatch = Dispatch::new("glTexCoordP2uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoordP2uiv(
  fp : CPtr,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glTexCoordP2uiv"

///|
pub fn gl_tex_coord_p2uiv(type_ : UInt, coords : FixedArray[UInt]) -> Unit {
  epoxy_glTexCoordP2uiv(d_glTexCoordP2uiv.get(), type_, coords)
}

///|
let d_glTexCoordP3ui : Dispatch = Dispatch::new("glTexCoordP3ui")

///|
extern "c" fn epoxy_glTexCoordP3ui(
  fp : CPtr,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glTexCoordP3ui"

///|
pub fn gl_tex_coord_p3ui(type_ : UInt, coords : UInt) -> Unit {
  epoxy_glTexCoordP3ui(d_glTexCoordP3ui.get(), type_, coords)
}

///|
let d_glTexCoordP3uiv : Dispatch = Dispatch::new("glTexCoordP3uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoordP3uiv(
  fp : CPtr,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glTexCoordP3uiv"

///|
pub fn gl_tex_coord_p3uiv(type_ : UInt, coords : FixedArray[UInt]) -> Unit {
  epoxy_glTexCoordP3uiv(d_glTexCoordP3uiv.get(), type_, coords)
}

///|
let d_glTexCoordP4ui : Dispatch = Dispatch::new("glTexCoordP4ui")

///|
extern "c" fn epoxy_glTexCoordP4ui(
  fp : CPtr,
  type_ : UInt,
  coords : UInt,
) -> Unit = "epoxy_glTexCoordP4ui"

///|
pub fn gl_tex_coord_p4ui(type_ : UInt, coords : UInt) -> Unit {
  epoxy_glTexCoordP4ui(d_glTexCoordP4ui.get(), type_, coords)
}

///|
let d_glTexCoordP4uiv : Dispatch = Dispatch::new("glTexCoordP4uiv")

///|
#borrow(coords)
extern "c" fn epoxy_glTexCoordP4uiv(
  fp : CPtr,
  type_ : UInt,
  coords : FixedArray[UInt],
) -> Unit = "epoxy_glTexCoordP4uiv"

///|
pub fn gl_tex_coord_p4uiv(type_ : UInt, coords : FixedArray[UInt]) -> Unit {
  epoxy_glTexCoordP4uiv(d_glTexCoordP4uiv.get(), type_, coords)
}

///|
let d_glTexCoordPointer : Dispatch = Dispatch::new("glTexCoordPointer")

///|
#borrow(pointer)
extern "c" fn epoxy_glTexCoordPointer(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glTexCoordPointer"

///|
pub fn gl_tex_coord_pointer(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glTexCoordPointer(
    d_glTexCoordPointer.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glTexCoordPointerEXT : Dispatch = Dispatch::new("glTexCoordPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glTexCoordPointerEXT(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glTexCoordPointerEXT"

///|
pub fn gl_tex_coord_pointer_ext(
  size : Int,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glTexCoordPointerEXT(
    d_glTexCoordPointerEXT.get(),
    size,
    type_,
    stride,
    count,
    pointer,
  )
}

///|
let d_glTexEnvf : Dispatch = Dispatch::new("glTexEnvf")

///|
extern "c" fn epoxy_glTexEnvf(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glTexEnvf"

///|
pub fn gl_tex_envf(target : UInt, pname : UInt, param : Float) -> Unit {
  epoxy_glTexEnvf(d_glTexEnvf.get(), target, pname, param)
}

///|
let d_glTexEnvfv : Dispatch = Dispatch::new("glTexEnvfv")

///|
#borrow(params)
extern "c" fn epoxy_glTexEnvfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glTexEnvfv"

///|
pub fn gl_tex_envfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glTexEnvfv(d_glTexEnvfv.get(), target, pname, params)
}

///|
let d_glTexEnvi : Dispatch = Dispatch::new("glTexEnvi")

///|
extern "c" fn epoxy_glTexEnvi(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexEnvi"

///|
pub fn gl_tex_envi(target : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexEnvi(d_glTexEnvi.get(), target, pname, param)
}

///|
let d_glTexEnviv : Dispatch = Dispatch::new("glTexEnviv")

///|
#borrow(params)
extern "c" fn epoxy_glTexEnviv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexEnviv"

///|
pub fn gl_tex_enviv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexEnviv(d_glTexEnviv.get(), target, pname, params)
}

///|
let d_glTexEnvx : Dispatch = Dispatch::new("glTexEnvx")

///|
extern "c" fn epoxy_glTexEnvx(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexEnvx"

///|
pub fn gl_tex_envx(target : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexEnvx(d_glTexEnvx.get(), target, pname, param)
}

///|
let d_glTexEnvxOES : Dispatch = Dispatch::new("glTexEnvxOES")

///|
extern "c" fn epoxy_glTexEnvxOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexEnvxOES"

///|
pub fn gl_tex_envx_oes(target : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexEnvxOES(d_glTexEnvxOES.get(), target, pname, param)
}

///|
let d_glTexEnvxv : Dispatch = Dispatch::new("glTexEnvxv")

///|
#borrow(params)
extern "c" fn epoxy_glTexEnvxv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexEnvxv"

///|
pub fn gl_tex_envxv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexEnvxv(d_glTexEnvxv.get(), target, pname, params)
}

///|
let d_glTexEnvxvOES : Dispatch = Dispatch::new("glTexEnvxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glTexEnvxvOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexEnvxvOES"

///|
pub fn gl_tex_envxv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexEnvxvOES(d_glTexEnvxvOES.get(), target, pname, params)
}

///|
let d_glTexEstimateMotionQCOM : Dispatch = Dispatch::new(
  "glTexEstimateMotionQCOM",
)

///|
extern "c" fn epoxy_glTexEstimateMotionQCOM(
  fp : CPtr,
  ref_ : UInt,
  target : UInt,
  output : UInt,
) -> Unit = "epoxy_glTexEstimateMotionQCOM"

///|
pub fn gl_tex_estimate_motion_qcom(
  ref_ : UInt,
  target : UInt,
  output : UInt,
) -> Unit {
  epoxy_glTexEstimateMotionQCOM(
    d_glTexEstimateMotionQCOM.get(),
    ref_,
    target,
    output,
  )
}

///|
let d_glTexEstimateMotionRegionsQCOM : Dispatch = Dispatch::new(
  "glTexEstimateMotionRegionsQCOM",
)

///|
extern "c" fn epoxy_glTexEstimateMotionRegionsQCOM(
  fp : CPtr,
  ref_ : UInt,
  target : UInt,
  output : UInt,
  mask : UInt,
) -> Unit = "epoxy_glTexEstimateMotionRegionsQCOM"

///|
pub fn gl_tex_estimate_motion_regions_qcom(
  ref_ : UInt,
  target : UInt,
  output : UInt,
  mask : UInt,
) -> Unit {
  epoxy_glTexEstimateMotionRegionsQCOM(
    d_glTexEstimateMotionRegionsQCOM.get(),
    ref_,
    target,
    output,
    mask,
  )
}

///|
let d_glExtrapolateTex2DQCOM : Dispatch = Dispatch::new(
  "glExtrapolateTex2DQCOM",
)

///|
extern "c" fn epoxy_glExtrapolateTex2DQCOM(
  fp : CPtr,
  src1 : UInt,
  src2 : UInt,
  output : UInt,
  scaleFactor : Float,
) -> Unit = "epoxy_glExtrapolateTex2DQCOM"

///|
pub fn gl_extrapolate_tex2_dqcom(
  src1 : UInt,
  src2 : UInt,
  output : UInt,
  scaleFactor : Float,
) -> Unit {
  epoxy_glExtrapolateTex2DQCOM(
    d_glExtrapolateTex2DQCOM.get(),
    src1,
    src2,
    output,
    scaleFactor,
  )
}

///|
let d_glTexFilterFuncSGIS : Dispatch = Dispatch::new("glTexFilterFuncSGIS")

///|
#borrow(weights)
extern "c" fn epoxy_glTexFilterFuncSGIS(
  fp : CPtr,
  target : UInt,
  filter : UInt,
  n : Int,
  weights : FixedArray[Float],
) -> Unit = "epoxy_glTexFilterFuncSGIS"

///|
pub fn gl_tex_filter_func_sgis(
  target : UInt,
  filter : UInt,
  n : Int,
  weights : FixedArray[Float],
) -> Unit {
  epoxy_glTexFilterFuncSGIS(
    d_glTexFilterFuncSGIS.get(),
    target,
    filter,
    n,
    weights,
  )
}

///|
let d_glTexGend : Dispatch = Dispatch::new("glTexGend")

///|
extern "c" fn epoxy_glTexGend(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  param : Double,
) -> Unit = "epoxy_glTexGend"

///|
pub fn gl_tex_gend(coord : UInt, pname : UInt, param : Double) -> Unit {
  epoxy_glTexGend(d_glTexGend.get(), coord, pname, param)
}

///|
let d_glTexGendv : Dispatch = Dispatch::new("glTexGendv")

///|
#borrow(params)
extern "c" fn epoxy_glTexGendv(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glTexGendv"

///|
pub fn gl_tex_gendv(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glTexGendv(d_glTexGendv.get(), coord, pname, params)
}

///|
let d_glTexGenf : Dispatch = Dispatch::new("glTexGenf")

///|
extern "c" fn epoxy_glTexGenf(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glTexGenf"

///|
pub fn gl_tex_genf(coord : UInt, pname : UInt, param : Float) -> Unit {
  epoxy_glTexGenf(d_glTexGenf.get(), coord, pname, param)
}

///|
let d_glTexGenfOES : Dispatch = Dispatch::new("glTexGenfOES")

///|
extern "c" fn epoxy_glTexGenfOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glTexGenfOES"

///|
pub fn gl_tex_genf_oes(coord : UInt, pname : UInt, param : Float) -> Unit {
  epoxy_glTexGenfOES(d_glTexGenfOES.get(), coord, pname, param)
}

///|
let d_glTexGenfv : Dispatch = Dispatch::new("glTexGenfv")

///|
#borrow(params)
extern "c" fn epoxy_glTexGenfv(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glTexGenfv"

///|
pub fn gl_tex_genfv(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glTexGenfv(d_glTexGenfv.get(), coord, pname, params)
}

///|
let d_glTexGenfvOES : Dispatch = Dispatch::new("glTexGenfvOES")

///|
#borrow(params)
extern "c" fn epoxy_glTexGenfvOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glTexGenfvOES"

///|
pub fn gl_tex_genfv_oes(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glTexGenfvOES(d_glTexGenfvOES.get(), coord, pname, params)
}

///|
let d_glTexGeni : Dispatch = Dispatch::new("glTexGeni")

///|
extern "c" fn epoxy_glTexGeni(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexGeni"

///|
pub fn gl_tex_geni(coord : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexGeni(d_glTexGeni.get(), coord, pname, param)
}

///|
let d_glTexGeniOES : Dispatch = Dispatch::new("glTexGeniOES")

///|
extern "c" fn epoxy_glTexGeniOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexGeniOES"

///|
pub fn gl_tex_geni_oes(coord : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexGeniOES(d_glTexGeniOES.get(), coord, pname, param)
}

///|
let d_glTexGeniv : Dispatch = Dispatch::new("glTexGeniv")

///|
#borrow(params)
extern "c" fn epoxy_glTexGeniv(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexGeniv"

///|
pub fn gl_tex_geniv(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexGeniv(d_glTexGeniv.get(), coord, pname, params)
}

///|
let d_glTexGenivOES : Dispatch = Dispatch::new("glTexGenivOES")

///|
#borrow(params)
extern "c" fn epoxy_glTexGenivOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexGenivOES"

///|
pub fn gl_tex_geniv_oes(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexGenivOES(d_glTexGenivOES.get(), coord, pname, params)
}

///|
let d_glTexGenxOES : Dispatch = Dispatch::new("glTexGenxOES")

///|
extern "c" fn epoxy_glTexGenxOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexGenxOES"

///|
pub fn gl_tex_genx_oes(coord : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexGenxOES(d_glTexGenxOES.get(), coord, pname, param)
}

///|
let d_glTexGenxvOES : Dispatch = Dispatch::new("glTexGenxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glTexGenxvOES(
  fp : CPtr,
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexGenxvOES"

///|
pub fn gl_tex_genxv_oes(
  coord : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexGenxvOES(d_glTexGenxvOES.get(), coord, pname, params)
}

///|
let d_glTexImage1D : Dispatch = Dispatch::new("glTexImage1D")

///|
#borrow(pixels)
extern "c" fn epoxy_glTexImage1D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexImage1D"

///|
pub fn gl_tex_image1_d(
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexImage1D(
    d_glTexImage1D.get(),
    target,
    level,
    internalformat,
    width,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexImage2D : Dispatch = Dispatch::new("glTexImage2D")

///|
#borrow(pixels)
extern "c" fn epoxy_glTexImage2D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexImage2D"

///|
pub fn gl_tex_image2_d(
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexImage2D(
    d_glTexImage2D.get(),
    target,
    level,
    internalformat,
    width,
    height,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexImage2DMultisample : Dispatch = Dispatch::new(
  "glTexImage2DMultisample",
)

///|
extern "c" fn epoxy_glTexImage2DMultisample(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTexImage2DMultisample"

///|
pub fn gl_tex_image2_d_multisample(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTexImage2DMultisample(
    d_glTexImage2DMultisample.get(),
    target,
    samples,
    internalformat,
    width,
    height,
    fixedsamplelocations,
  )
}

///|
let d_glTexImage2DMultisampleCoverageNV : Dispatch = Dispatch::new(
  "glTexImage2DMultisampleCoverageNV",
)

///|
extern "c" fn epoxy_glTexImage2DMultisampleCoverageNV(
  fp : CPtr,
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
) -> Unit = "epoxy_glTexImage2DMultisampleCoverageNV"

///|
pub fn gl_tex_image2_d_multisample_coverage_nv(
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
) -> Unit {
  epoxy_glTexImage2DMultisampleCoverageNV(
    d_glTexImage2DMultisampleCoverageNV.get(),
    target,
    coverageSamples,
    colorSamples,
    internalFormat,
    width,
    height,
    fixedSampleLocations,
  )
}

///|
let d_glTexImage3D : Dispatch = Dispatch::with_aliases("glTexImage3D", [
  "glTexImage3DEXT",
])

///|
#borrow(pixels)
extern "c" fn epoxy_glTexImage3D(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexImage3D"

///|
pub fn gl_tex_image3_d(
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexImage3D(
    d_glTexImage3D.get(),
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexImage3DEXT : Dispatch = Dispatch::with_aliases("glTexImage3DEXT", [
  "glTexImage3D",
])

///|
#borrow(pixels)
extern "c" fn epoxy_glTexImage3DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexImage3DEXT"

///|
pub fn gl_tex_image3_dext(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexImage3DEXT(
    d_glTexImage3DEXT.get(),
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexImage3DMultisample : Dispatch = Dispatch::new(
  "glTexImage3DMultisample",
)

///|
extern "c" fn epoxy_glTexImage3DMultisample(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTexImage3DMultisample"

///|
pub fn gl_tex_image3_d_multisample(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTexImage3DMultisample(
    d_glTexImage3DMultisample.get(),
    target,
    samples,
    internalformat,
    width,
    height,
    depth,
    fixedsamplelocations,
  )
}

///|
let d_glTexImage3DMultisampleCoverageNV : Dispatch = Dispatch::new(
  "glTexImage3DMultisampleCoverageNV",
)

///|
extern "c" fn epoxy_glTexImage3DMultisampleCoverageNV(
  fp : CPtr,
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
) -> Unit = "epoxy_glTexImage3DMultisampleCoverageNV"

///|
pub fn gl_tex_image3_d_multisample_coverage_nv(
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
) -> Unit {
  epoxy_glTexImage3DMultisampleCoverageNV(
    d_glTexImage3DMultisampleCoverageNV.get(),
    target,
    coverageSamples,
    colorSamples,
    internalFormat,
    width,
    height,
    depth,
    fixedSampleLocations,
  )
}

///|
let d_glTexImage3DOES : Dispatch = Dispatch::new("glTexImage3DOES")

///|
#borrow(pixels)
extern "c" fn epoxy_glTexImage3DOES(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexImage3DOES"

///|
pub fn gl_tex_image3_does(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexImage3DOES(
    d_glTexImage3DOES.get(),
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexImage4DSGIS : Dispatch = Dispatch::new("glTexImage4DSGIS")

///|
#borrow(pixels)
extern "c" fn epoxy_glTexImage4DSGIS(
  fp : CPtr,
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  size4d : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexImage4DSGIS"

///|
pub fn gl_tex_image4_dsgis(
  target : UInt,
  level : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  size4d : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexImage4DSGIS(
    d_glTexImage4DSGIS.get(),
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    size4d,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexPageCommitmentARB : Dispatch = Dispatch::with_aliases(
  "glTexPageCommitmentARB",
  ["glTexPageCommitmentEXT"],
)

///|
extern "c" fn epoxy_glTexPageCommitmentARB(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  commit : Bool,
) -> Unit = "epoxy_glTexPageCommitmentARB"

///|
pub fn gl_tex_page_commitment_arb(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  commit : Bool,
) -> Unit {
  epoxy_glTexPageCommitmentARB(
    d_glTexPageCommitmentARB.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    commit,
  )
}

///|
let d_glTexPageCommitmentEXT : Dispatch = Dispatch::with_aliases(
  "glTexPageCommitmentEXT",
  ["glTexPageCommitmentARB"],
)

///|
extern "c" fn epoxy_glTexPageCommitmentEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  commit : Bool,
) -> Unit = "epoxy_glTexPageCommitmentEXT"

///|
pub fn gl_tex_page_commitment_ext(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  commit : Bool,
) -> Unit {
  epoxy_glTexPageCommitmentEXT(
    d_glTexPageCommitmentEXT.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    commit,
  )
}

///|
let d_glTexPageCommitmentMemNV : Dispatch = Dispatch::new(
  "glTexPageCommitmentMemNV",
)

///|
extern "c" fn epoxy_glTexPageCommitmentMemNV(
  fp : CPtr,
  target : UInt,
  layer : Int,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
  commit : Bool,
) -> Unit = "epoxy_glTexPageCommitmentMemNV"

///|
pub fn gl_tex_page_commitment_mem_nv(
  target : UInt,
  layer : Int,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
  commit : Bool,
) -> Unit {
  epoxy_glTexPageCommitmentMemNV(
    d_glTexPageCommitmentMemNV.get(),
    target,
    layer,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    memory,
    offset,
    commit,
  )
}

///|
let d_glTexParameterIiv : Dispatch = Dispatch::with_aliases(
  "glTexParameterIiv",
  ["glTexParameterIivEXT", "glTexParameterIivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterIiv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexParameterIiv"

///|
pub fn gl_tex_parameter_iiv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexParameterIiv(d_glTexParameterIiv.get(), target, pname, params)
}

///|
let d_glTexParameterIivEXT : Dispatch = Dispatch::with_aliases(
  "glTexParameterIivEXT",
  ["glTexParameterIiv", "glTexParameterIivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterIivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexParameterIivEXT"

///|
pub fn gl_tex_parameter_iiv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexParameterIivEXT(
    d_glTexParameterIivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glTexParameterIivOES : Dispatch = Dispatch::with_aliases(
  "glTexParameterIivOES",
  ["glTexParameterIiv", "glTexParameterIivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterIivOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexParameterIivOES"

///|
pub fn gl_tex_parameter_iiv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexParameterIivOES(
    d_glTexParameterIivOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glTexParameterIuiv : Dispatch = Dispatch::with_aliases(
  "glTexParameterIuiv",
  ["glTexParameterIuivEXT", "glTexParameterIuivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterIuiv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glTexParameterIuiv"

///|
pub fn gl_tex_parameter_iuiv(
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glTexParameterIuiv(d_glTexParameterIuiv.get(), target, pname, params)
}

///|
let d_glTexParameterIuivEXT : Dispatch = Dispatch::with_aliases(
  "glTexParameterIuivEXT",
  ["glTexParameterIuiv", "glTexParameterIuivOES"],
)

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterIuivEXT(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glTexParameterIuivEXT"

///|
pub fn gl_tex_parameter_iuiv_ext(
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glTexParameterIuivEXT(
    d_glTexParameterIuivEXT.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glTexParameterIuivOES : Dispatch = Dispatch::with_aliases(
  "glTexParameterIuivOES",
  ["glTexParameterIuiv", "glTexParameterIuivEXT"],
)

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterIuivOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glTexParameterIuivOES"

///|
pub fn gl_tex_parameter_iuiv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glTexParameterIuivOES(
    d_glTexParameterIuivOES.get(),
    target,
    pname,
    params,
  )
}

///|
let d_glTexParameterf : Dispatch = Dispatch::new("glTexParameterf")

///|
extern "c" fn epoxy_glTexParameterf(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glTexParameterf"

///|
pub fn gl_tex_parameterf(target : UInt, pname : UInt, param : Float) -> Unit {
  epoxy_glTexParameterf(d_glTexParameterf.get(), target, pname, param)
}

///|
let d_glTexParameterfv : Dispatch = Dispatch::new("glTexParameterfv")

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterfv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glTexParameterfv"

///|
pub fn gl_tex_parameterfv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glTexParameterfv(d_glTexParameterfv.get(), target, pname, params)
}

///|
let d_glTexParameteri : Dispatch = Dispatch::new("glTexParameteri")

///|
extern "c" fn epoxy_glTexParameteri(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexParameteri"

///|
pub fn gl_tex_parameteri(target : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexParameteri(d_glTexParameteri.get(), target, pname, param)
}

///|
let d_glTexParameteriv : Dispatch = Dispatch::new("glTexParameteriv")

///|
#borrow(params)
extern "c" fn epoxy_glTexParameteriv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexParameteriv"

///|
pub fn gl_tex_parameteriv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexParameteriv(d_glTexParameteriv.get(), target, pname, params)
}

///|
let d_glTexParameterx : Dispatch = Dispatch::new("glTexParameterx")

///|
extern "c" fn epoxy_glTexParameterx(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexParameterx"

///|
pub fn gl_tex_parameterx(target : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexParameterx(d_glTexParameterx.get(), target, pname, param)
}

///|
let d_glTexParameterxOES : Dispatch = Dispatch::new("glTexParameterxOES")

///|
extern "c" fn epoxy_glTexParameterxOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTexParameterxOES"

///|
pub fn gl_tex_parameterx_oes(target : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTexParameterxOES(d_glTexParameterxOES.get(), target, pname, param)
}

///|
let d_glTexParameterxv : Dispatch = Dispatch::new("glTexParameterxv")

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterxv(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexParameterxv"

///|
pub fn gl_tex_parameterxv(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexParameterxv(d_glTexParameterxv.get(), target, pname, params)
}

///|
let d_glTexParameterxvOES : Dispatch = Dispatch::new("glTexParameterxvOES")

///|
#borrow(params)
extern "c" fn epoxy_glTexParameterxvOES(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTexParameterxvOES"

///|
pub fn gl_tex_parameterxv_oes(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTexParameterxvOES(d_glTexParameterxvOES.get(), target, pname, params)
}

///|
let d_glTexRenderbufferNV : Dispatch = Dispatch::new("glTexRenderbufferNV")

///|
extern "c" fn epoxy_glTexRenderbufferNV(
  fp : CPtr,
  target : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glTexRenderbufferNV"

///|
pub fn gl_tex_renderbuffer_nv(target : UInt, renderbuffer : UInt) -> Unit {
  epoxy_glTexRenderbufferNV(d_glTexRenderbufferNV.get(), target, renderbuffer)
}

///|
let d_glTexStorage1D : Dispatch = Dispatch::with_aliases("glTexStorage1D", [
  "glTexStorage1DEXT",
])

///|
extern "c" fn epoxy_glTexStorage1D(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit = "epoxy_glTexStorage1D"

///|
pub fn gl_tex_storage1_d(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit {
  epoxy_glTexStorage1D(
    d_glTexStorage1D.get(),
    target,
    levels,
    internalformat,
    width,
  )
}

///|
let d_glTexStorage1DEXT : Dispatch = Dispatch::with_aliases(
  "glTexStorage1DEXT",
  ["glTexStorage1D"],
)

///|
extern "c" fn epoxy_glTexStorage1DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit = "epoxy_glTexStorage1DEXT"

///|
pub fn gl_tex_storage1_dext(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit {
  epoxy_glTexStorage1DEXT(
    d_glTexStorage1DEXT.get(),
    target,
    levels,
    internalformat,
    width,
  )
}

///|
let d_glTexStorage2D : Dispatch = Dispatch::with_aliases("glTexStorage2D", [
  "glTexStorage2DEXT",
])

///|
extern "c" fn epoxy_glTexStorage2D(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glTexStorage2D"

///|
pub fn gl_tex_storage2_d(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glTexStorage2D(
    d_glTexStorage2D.get(),
    target,
    levels,
    internalformat,
    width,
    height,
  )
}

///|
let d_glTexStorage2DEXT : Dispatch = Dispatch::with_aliases(
  "glTexStorage2DEXT",
  ["glTexStorage2D"],
)

///|
extern "c" fn epoxy_glTexStorage2DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glTexStorage2DEXT"

///|
pub fn gl_tex_storage2_dext(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glTexStorage2DEXT(
    d_glTexStorage2DEXT.get(),
    target,
    levels,
    internalformat,
    width,
    height,
  )
}

///|
let d_glTexStorage2DMultisample : Dispatch = Dispatch::new(
  "glTexStorage2DMultisample",
)

///|
extern "c" fn epoxy_glTexStorage2DMultisample(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTexStorage2DMultisample"

///|
pub fn gl_tex_storage2_d_multisample(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTexStorage2DMultisample(
    d_glTexStorage2DMultisample.get(),
    target,
    samples,
    internalformat,
    width,
    height,
    fixedsamplelocations,
  )
}

///|
let d_glTexStorage3D : Dispatch = Dispatch::with_aliases("glTexStorage3D", [
  "glTexStorage3DEXT",
])

///|
extern "c" fn epoxy_glTexStorage3D(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit = "epoxy_glTexStorage3D"

///|
pub fn gl_tex_storage3_d(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit {
  epoxy_glTexStorage3D(
    d_glTexStorage3D.get(),
    target,
    levels,
    internalformat,
    width,
    height,
    depth,
  )
}

///|
let d_glTexStorage3DEXT : Dispatch = Dispatch::with_aliases(
  "glTexStorage3DEXT",
  ["glTexStorage3D"],
)

///|
extern "c" fn epoxy_glTexStorage3DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit = "epoxy_glTexStorage3DEXT"

///|
pub fn gl_tex_storage3_dext(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit {
  epoxy_glTexStorage3DEXT(
    d_glTexStorage3DEXT.get(),
    target,
    levels,
    internalformat,
    width,
    height,
    depth,
  )
}

///|
let d_glTexStorage3DMultisample : Dispatch = Dispatch::with_aliases(
  "glTexStorage3DMultisample",
  ["glTexStorage3DMultisampleOES"],
)

///|
extern "c" fn epoxy_glTexStorage3DMultisample(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTexStorage3DMultisample"

///|
pub fn gl_tex_storage3_d_multisample(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTexStorage3DMultisample(
    d_glTexStorage3DMultisample.get(),
    target,
    samples,
    internalformat,
    width,
    height,
    depth,
    fixedsamplelocations,
  )
}

///|
let d_glTexStorage3DMultisampleOES : Dispatch = Dispatch::with_aliases(
  "glTexStorage3DMultisampleOES",
  ["glTexStorage3DMultisample"],
)

///|
extern "c" fn epoxy_glTexStorage3DMultisampleOES(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTexStorage3DMultisampleOES"

///|
pub fn gl_tex_storage3_d_multisample_oes(
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTexStorage3DMultisampleOES(
    d_glTexStorage3DMultisampleOES.get(),
    target,
    samples,
    internalformat,
    width,
    height,
    depth,
    fixedsamplelocations,
  )
}

///|
let d_glTexStorageAttribs2DEXT : Dispatch = Dispatch::new(
  "glTexStorageAttribs2DEXT",
)

///|
#borrow(attrib_list)
extern "c" fn epoxy_glTexStorageAttribs2DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  attrib_list : FixedArray[Int],
) -> Unit = "epoxy_glTexStorageAttribs2DEXT"

///|
pub fn gl_tex_storage_attribs2_dext(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  attrib_list : FixedArray[Int],
) -> Unit {
  epoxy_glTexStorageAttribs2DEXT(
    d_glTexStorageAttribs2DEXT.get(),
    target,
    levels,
    internalformat,
    width,
    height,
    attrib_list,
  )
}

///|
let d_glTexStorageAttribs3DEXT : Dispatch = Dispatch::new(
  "glTexStorageAttribs3DEXT",
)

///|
#borrow(attrib_list)
extern "c" fn epoxy_glTexStorageAttribs3DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  attrib_list : FixedArray[Int],
) -> Unit = "epoxy_glTexStorageAttribs3DEXT"

///|
pub fn gl_tex_storage_attribs3_dext(
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  attrib_list : FixedArray[Int],
) -> Unit {
  epoxy_glTexStorageAttribs3DEXT(
    d_glTexStorageAttribs3DEXT.get(),
    target,
    levels,
    internalformat,
    width,
    height,
    depth,
    attrib_list,
  )
}

///|
let d_glTexStorageMem1DEXT : Dispatch = Dispatch::new("glTexStorageMem1DEXT")

///|
extern "c" fn epoxy_glTexStorageMem1DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTexStorageMem1DEXT"

///|
pub fn gl_tex_storage_mem1_dext(
  target : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTexStorageMem1DEXT(
    d_glTexStorageMem1DEXT.get(),
    target,
    levels,
    internalFormat,
    width,
    memory,
    offset,
  )
}

///|
let d_glTexStorageMem2DEXT : Dispatch = Dispatch::new("glTexStorageMem2DEXT")

///|
extern "c" fn epoxy_glTexStorageMem2DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTexStorageMem2DEXT"

///|
pub fn gl_tex_storage_mem2_dext(
  target : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTexStorageMem2DEXT(
    d_glTexStorageMem2DEXT.get(),
    target,
    levels,
    internalFormat,
    width,
    height,
    memory,
    offset,
  )
}

///|
let d_glTexStorageMem2DMultisampleEXT : Dispatch = Dispatch::new(
  "glTexStorageMem2DMultisampleEXT",
)

///|
extern "c" fn epoxy_glTexStorageMem2DMultisampleEXT(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTexStorageMem2DMultisampleEXT"

///|
pub fn gl_tex_storage_mem2_d_multisample_ext(
  target : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTexStorageMem2DMultisampleEXT(
    d_glTexStorageMem2DMultisampleEXT.get(),
    target,
    samples,
    internalFormat,
    width,
    height,
    fixedSampleLocations,
    memory,
    offset,
  )
}

///|
let d_glTexStorageMem3DEXT : Dispatch = Dispatch::new("glTexStorageMem3DEXT")

///|
extern "c" fn epoxy_glTexStorageMem3DEXT(
  fp : CPtr,
  target : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTexStorageMem3DEXT"

///|
pub fn gl_tex_storage_mem3_dext(
  target : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTexStorageMem3DEXT(
    d_glTexStorageMem3DEXT.get(),
    target,
    levels,
    internalFormat,
    width,
    height,
    depth,
    memory,
    offset,
  )
}

///|
let d_glTexStorageMem3DMultisampleEXT : Dispatch = Dispatch::new(
  "glTexStorageMem3DMultisampleEXT",
)

///|
extern "c" fn epoxy_glTexStorageMem3DMultisampleEXT(
  fp : CPtr,
  target : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTexStorageMem3DMultisampleEXT"

///|
pub fn gl_tex_storage_mem3_d_multisample_ext(
  target : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTexStorageMem3DMultisampleEXT(
    d_glTexStorageMem3DMultisampleEXT.get(),
    target,
    samples,
    internalFormat,
    width,
    height,
    depth,
    fixedSampleLocations,
    memory,
    offset,
  )
}

///|
let d_glTexStorageSparseAMD : Dispatch = Dispatch::new("glTexStorageSparseAMD")

///|
extern "c" fn epoxy_glTexStorageSparseAMD(
  fp : CPtr,
  target : UInt,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  layers : Int,
  flags : UInt,
) -> Unit = "epoxy_glTexStorageSparseAMD"

///|
pub fn gl_tex_storage_sparse_amd(
  target : UInt,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  layers : Int,
  flags : UInt,
) -> Unit {
  epoxy_glTexStorageSparseAMD(
    d_glTexStorageSparseAMD.get(),
    target,
    internalFormat,
    width,
    height,
    depth,
    layers,
    flags,
  )
}

///|
let d_glTexSubImage1D : Dispatch = Dispatch::with_aliases("glTexSubImage1D", [
  "glTexSubImage1DEXT",
])

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage1D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage1D"

///|
pub fn gl_tex_sub_image1_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage1D(
    d_glTexSubImage1D.get(),
    target,
    level,
    xoffset,
    width,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexSubImage1DEXT : Dispatch = Dispatch::with_aliases(
  "glTexSubImage1DEXT",
  ["glTexSubImage1D"],
)

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage1DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage1DEXT"

///|
pub fn gl_tex_sub_image1_dext(
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage1DEXT(
    d_glTexSubImage1DEXT.get(),
    target,
    level,
    xoffset,
    width,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexSubImage2D : Dispatch = Dispatch::with_aliases("glTexSubImage2D", [
  "glTexSubImage2DEXT",
])

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage2D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage2D"

///|
pub fn gl_tex_sub_image2_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage2D(
    d_glTexSubImage2D.get(),
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexSubImage2DEXT : Dispatch = Dispatch::with_aliases(
  "glTexSubImage2DEXT",
  ["glTexSubImage2D"],
)

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage2DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage2DEXT"

///|
pub fn gl_tex_sub_image2_dext(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage2DEXT(
    d_glTexSubImage2DEXT.get(),
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexSubImage3D : Dispatch = Dispatch::with_aliases("glTexSubImage3D", [
  "glTexSubImage3DEXT",
])

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage3D(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage3D"

///|
pub fn gl_tex_sub_image3_d(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage3D(
    d_glTexSubImage3D.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexSubImage3DEXT : Dispatch = Dispatch::with_aliases(
  "glTexSubImage3DEXT",
  ["glTexSubImage3D"],
)

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage3DEXT(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage3DEXT"

///|
pub fn gl_tex_sub_image3_dext(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage3DEXT(
    d_glTexSubImage3DEXT.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexSubImage3DOES : Dispatch = Dispatch::new("glTexSubImage3DOES")

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage3DOES(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage3DOES"

///|
pub fn gl_tex_sub_image3_does(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage3DOES(
    d_glTexSubImage3DOES.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTexSubImage4DSGIS : Dispatch = Dispatch::new("glTexSubImage4DSGIS")

///|
#borrow(pixels)
extern "c" fn epoxy_glTexSubImage4DSGIS(
  fp : CPtr,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  woffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  size4d : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTexSubImage4DSGIS"

///|
pub fn gl_tex_sub_image4_dsgis(
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  woffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  size4d : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTexSubImage4DSGIS(
    d_glTexSubImage4DSGIS.get(),
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    woffset,
    width,
    height,
    depth,
    size4d,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureAttachMemoryNV : Dispatch = Dispatch::new(
  "glTextureAttachMemoryNV",
)

///|
extern "c" fn epoxy_glTextureAttachMemoryNV(
  fp : CPtr,
  texture : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTextureAttachMemoryNV"

///|
pub fn gl_texture_attach_memory_nv(
  texture : UInt,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTextureAttachMemoryNV(
    d_glTextureAttachMemoryNV.get(),
    texture,
    memory,
    offset,
  )
}

///|
let d_glTextureBarrier : Dispatch = Dispatch::new("glTextureBarrier")

///|
extern "c" fn epoxy_glTextureBarrier(fp : CPtr) -> Unit = "epoxy_glTextureBarrier"

///|
pub fn gl_texture_barrier() -> Unit {
  epoxy_glTextureBarrier(d_glTextureBarrier.get())
}

///|
let d_glTextureBarrierNV : Dispatch = Dispatch::new("glTextureBarrierNV")

///|
extern "c" fn epoxy_glTextureBarrierNV(fp : CPtr) -> Unit = "epoxy_glTextureBarrierNV"

///|
pub fn gl_texture_barrier_nv() -> Unit {
  epoxy_glTextureBarrierNV(d_glTextureBarrierNV.get())
}

///|
let d_glTextureBuffer : Dispatch = Dispatch::new("glTextureBuffer")

///|
extern "c" fn epoxy_glTextureBuffer(
  fp : CPtr,
  texture : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glTextureBuffer"

///|
pub fn gl_texture_buffer(
  texture : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glTextureBuffer(
    d_glTextureBuffer.get(),
    texture,
    internalformat,
    buffer,
  )
}

///|
let d_glTextureBufferEXT : Dispatch = Dispatch::new("glTextureBufferEXT")

///|
extern "c" fn epoxy_glTextureBufferEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glTextureBufferEXT"

///|
pub fn gl_texture_buffer_ext(
  texture : UInt,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glTextureBufferEXT(
    d_glTextureBufferEXT.get(),
    texture,
    target,
    internalformat,
    buffer,
  )
}

///|
let d_glTextureBufferRange : Dispatch = Dispatch::new("glTextureBufferRange")

///|
extern "c" fn epoxy_glTextureBufferRange(
  fp : CPtr,
  texture : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glTextureBufferRange"

///|
pub fn gl_texture_buffer_range(
  texture : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glTextureBufferRange(
    d_glTextureBufferRange.get(),
    texture,
    internalformat,
    buffer,
    offset,
    size,
  )
}

///|
let d_glTextureBufferRangeEXT : Dispatch = Dispatch::new(
  "glTextureBufferRangeEXT",
)

///|
extern "c" fn epoxy_glTextureBufferRangeEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glTextureBufferRangeEXT"

///|
pub fn gl_texture_buffer_range_ext(
  texture : UInt,
  target : UInt,
  internalformat : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glTextureBufferRangeEXT(
    d_glTextureBufferRangeEXT.get(),
    texture,
    target,
    internalformat,
    buffer,
    offset,
    size,
  )
}

///|
let d_glTextureColorMaskSGIS : Dispatch = Dispatch::new(
  "glTextureColorMaskSGIS",
)

///|
extern "c" fn epoxy_glTextureColorMaskSGIS(
  fp : CPtr,
  red : Bool,
  green : Bool,
  blue : Bool,
  alpha : Bool,
) -> Unit = "epoxy_glTextureColorMaskSGIS"

///|
pub fn gl_texture_color_mask_sgis(
  red : Bool,
  green : Bool,
  blue : Bool,
  alpha : Bool,
) -> Unit {
  epoxy_glTextureColorMaskSGIS(
    d_glTextureColorMaskSGIS.get(),
    red,
    green,
    blue,
    alpha,
  )
}

///|
let d_glTextureFoveationParametersQCOM : Dispatch = Dispatch::new(
  "glTextureFoveationParametersQCOM",
)

///|
extern "c" fn epoxy_glTextureFoveationParametersQCOM(
  fp : CPtr,
  texture : UInt,
  layer : UInt,
  focalPoint : UInt,
  focalX : Float,
  focalY : Float,
  gainX : Float,
  gainY : Float,
  foveaArea : Float,
) -> Unit = "epoxy_glTextureFoveationParametersQCOM"

///|
pub fn gl_texture_foveation_parameters_qcom(
  texture : UInt,
  layer : UInt,
  focalPoint : UInt,
  focalX : Float,
  focalY : Float,
  gainX : Float,
  gainY : Float,
  foveaArea : Float,
) -> Unit {
  epoxy_glTextureFoveationParametersQCOM(
    d_glTextureFoveationParametersQCOM.get(),
    texture,
    layer,
    focalPoint,
    focalX,
    focalY,
    gainX,
    gainY,
    foveaArea,
  )
}

///|
let d_glTextureImage1DEXT : Dispatch = Dispatch::new("glTextureImage1DEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureImage1DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureImage1DEXT"

///|
pub fn gl_texture_image1_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureImage1DEXT(
    d_glTextureImage1DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    width,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureImage2DEXT : Dispatch = Dispatch::new("glTextureImage2DEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureImage2DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureImage2DEXT"

///|
pub fn gl_texture_image2_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureImage2DEXT(
    d_glTextureImage2DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    width,
    height,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureImage2DMultisampleCoverageNV : Dispatch = Dispatch::new(
  "glTextureImage2DMultisampleCoverageNV",
)

///|
extern "c" fn epoxy_glTextureImage2DMultisampleCoverageNV(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
) -> Unit = "epoxy_glTextureImage2DMultisampleCoverageNV"

///|
pub fn gl_texture_image2_d_multisample_coverage_nv(
  texture : UInt,
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
) -> Unit {
  epoxy_glTextureImage2DMultisampleCoverageNV(
    d_glTextureImage2DMultisampleCoverageNV.get(),
    texture,
    target,
    coverageSamples,
    colorSamples,
    internalFormat,
    width,
    height,
    fixedSampleLocations,
  )
}

///|
let d_glTextureImage2DMultisampleNV : Dispatch = Dispatch::new(
  "glTextureImage2DMultisampleNV",
)

///|
extern "c" fn epoxy_glTextureImage2DMultisampleNV(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  samples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
) -> Unit = "epoxy_glTextureImage2DMultisampleNV"

///|
pub fn gl_texture_image2_d_multisample_nv(
  texture : UInt,
  target : UInt,
  samples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
) -> Unit {
  epoxy_glTextureImage2DMultisampleNV(
    d_glTextureImage2DMultisampleNV.get(),
    texture,
    target,
    samples,
    internalFormat,
    width,
    height,
    fixedSampleLocations,
  )
}

///|
let d_glTextureImage3DEXT : Dispatch = Dispatch::new("glTextureImage3DEXT")

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureImage3DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureImage3DEXT"

///|
pub fn gl_texture_image3_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  internalformat : Int,
  width : Int,
  height : Int,
  depth : Int,
  border : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureImage3DEXT(
    d_glTextureImage3DEXT.get(),
    texture,
    target,
    level,
    internalformat,
    width,
    height,
    depth,
    border,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureImage3DMultisampleCoverageNV : Dispatch = Dispatch::new(
  "glTextureImage3DMultisampleCoverageNV",
)

///|
extern "c" fn epoxy_glTextureImage3DMultisampleCoverageNV(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
) -> Unit = "epoxy_glTextureImage3DMultisampleCoverageNV"

///|
pub fn gl_texture_image3_d_multisample_coverage_nv(
  texture : UInt,
  target : UInt,
  coverageSamples : Int,
  colorSamples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
) -> Unit {
  epoxy_glTextureImage3DMultisampleCoverageNV(
    d_glTextureImage3DMultisampleCoverageNV.get(),
    texture,
    target,
    coverageSamples,
    colorSamples,
    internalFormat,
    width,
    height,
    depth,
    fixedSampleLocations,
  )
}

///|
let d_glTextureImage3DMultisampleNV : Dispatch = Dispatch::new(
  "glTextureImage3DMultisampleNV",
)

///|
extern "c" fn epoxy_glTextureImage3DMultisampleNV(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  samples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
) -> Unit = "epoxy_glTextureImage3DMultisampleNV"

///|
pub fn gl_texture_image3_d_multisample_nv(
  texture : UInt,
  target : UInt,
  samples : Int,
  internalFormat : Int,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
) -> Unit {
  epoxy_glTextureImage3DMultisampleNV(
    d_glTextureImage3DMultisampleNV.get(),
    texture,
    target,
    samples,
    internalFormat,
    width,
    height,
    depth,
    fixedSampleLocations,
  )
}

///|
let d_glTextureLightEXT : Dispatch = Dispatch::new("glTextureLightEXT")

///|
extern "c" fn epoxy_glTextureLightEXT(fp : CPtr, pname : UInt) -> Unit = "epoxy_glTextureLightEXT"

///|
pub fn gl_texture_light_ext(pname : UInt) -> Unit {
  epoxy_glTextureLightEXT(d_glTextureLightEXT.get(), pname)
}

///|
let d_glTextureMaterialEXT : Dispatch = Dispatch::new("glTextureMaterialEXT")

///|
extern "c" fn epoxy_glTextureMaterialEXT(
  fp : CPtr,
  face : UInt,
  mode : UInt,
) -> Unit = "epoxy_glTextureMaterialEXT"

///|
pub fn gl_texture_material_ext(face : UInt, mode : UInt) -> Unit {
  epoxy_glTextureMaterialEXT(d_glTextureMaterialEXT.get(), face, mode)
}

///|
let d_glTextureNormalEXT : Dispatch = Dispatch::new("glTextureNormalEXT")

///|
extern "c" fn epoxy_glTextureNormalEXT(fp : CPtr, mode : UInt) -> Unit = "epoxy_glTextureNormalEXT"

///|
pub fn gl_texture_normal_ext(mode : UInt) -> Unit {
  epoxy_glTextureNormalEXT(d_glTextureNormalEXT.get(), mode)
}

///|
let d_glTexturePageCommitmentEXT : Dispatch = Dispatch::new(
  "glTexturePageCommitmentEXT",
)

///|
extern "c" fn epoxy_glTexturePageCommitmentEXT(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  commit : Bool,
) -> Unit = "epoxy_glTexturePageCommitmentEXT"

///|
pub fn gl_texture_page_commitment_ext(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  commit : Bool,
) -> Unit {
  epoxy_glTexturePageCommitmentEXT(
    d_glTexturePageCommitmentEXT.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    commit,
  )
}

///|
let d_glTexturePageCommitmentMemNV : Dispatch = Dispatch::new(
  "glTexturePageCommitmentMemNV",
)

///|
extern "c" fn epoxy_glTexturePageCommitmentMemNV(
  fp : CPtr,
  texture : UInt,
  layer : Int,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
  commit : Bool,
) -> Unit = "epoxy_glTexturePageCommitmentMemNV"

///|
pub fn gl_texture_page_commitment_mem_nv(
  texture : UInt,
  layer : Int,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
  commit : Bool,
) -> Unit {
  epoxy_glTexturePageCommitmentMemNV(
    d_glTexturePageCommitmentMemNV.get(),
    texture,
    layer,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    memory,
    offset,
    commit,
  )
}

///|
let d_glTextureParameterIiv : Dispatch = Dispatch::new("glTextureParameterIiv")

///|
#borrow(params)
extern "c" fn epoxy_glTextureParameterIiv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTextureParameterIiv"

///|
pub fn gl_texture_parameter_iiv(
  texture : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTextureParameterIiv(
    d_glTextureParameterIiv.get(),
    texture,
    pname,
    params,
  )
}

///|
let d_glTextureParameterIivEXT : Dispatch = Dispatch::new(
  "glTextureParameterIivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glTextureParameterIivEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTextureParameterIivEXT"

///|
pub fn gl_texture_parameter_iiv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTextureParameterIivEXT(
    d_glTextureParameterIivEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glTextureParameterIuiv : Dispatch = Dispatch::new(
  "glTextureParameterIuiv",
)

///|
#borrow(params)
extern "c" fn epoxy_glTextureParameterIuiv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glTextureParameterIuiv"

///|
pub fn gl_texture_parameter_iuiv(
  texture : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glTextureParameterIuiv(
    d_glTextureParameterIuiv.get(),
    texture,
    pname,
    params,
  )
}

///|
let d_glTextureParameterIuivEXT : Dispatch = Dispatch::new(
  "glTextureParameterIuivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glTextureParameterIuivEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit = "epoxy_glTextureParameterIuivEXT"

///|
pub fn gl_texture_parameter_iuiv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[UInt],
) -> Unit {
  epoxy_glTextureParameterIuivEXT(
    d_glTextureParameterIuivEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glTextureParameterf : Dispatch = Dispatch::new("glTextureParameterf")

///|
extern "c" fn epoxy_glTextureParameterf(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glTextureParameterf"

///|
pub fn gl_texture_parameterf(
  texture : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glTextureParameterf(d_glTextureParameterf.get(), texture, pname, param)
}

///|
let d_glTextureParameterfEXT : Dispatch = Dispatch::new(
  "glTextureParameterfEXT",
)

///|
extern "c" fn epoxy_glTextureParameterfEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glTextureParameterfEXT"

///|
pub fn gl_texture_parameterf_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  param : Float,
) -> Unit {
  epoxy_glTextureParameterfEXT(
    d_glTextureParameterfEXT.get(),
    texture,
    target,
    pname,
    param,
  )
}

///|
let d_glTextureParameterfv : Dispatch = Dispatch::new("glTextureParameterfv")

///|
#borrow(param)
extern "c" fn epoxy_glTextureParameterfv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  param : FixedArray[Float],
) -> Unit = "epoxy_glTextureParameterfv"

///|
pub fn gl_texture_parameterfv(
  texture : UInt,
  pname : UInt,
  param : FixedArray[Float],
) -> Unit {
  epoxy_glTextureParameterfv(
    d_glTextureParameterfv.get(),
    texture,
    pname,
    param,
  )
}

///|
let d_glTextureParameterfvEXT : Dispatch = Dispatch::new(
  "glTextureParameterfvEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glTextureParameterfvEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glTextureParameterfvEXT"

///|
pub fn gl_texture_parameterfv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glTextureParameterfvEXT(
    d_glTextureParameterfvEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glTextureParameteri : Dispatch = Dispatch::new("glTextureParameteri")

///|
extern "c" fn epoxy_glTextureParameteri(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTextureParameteri"

///|
pub fn gl_texture_parameteri(texture : UInt, pname : UInt, param : Int) -> Unit {
  epoxy_glTextureParameteri(d_glTextureParameteri.get(), texture, pname, param)
}

///|
let d_glTextureParameteriEXT : Dispatch = Dispatch::new(
  "glTextureParameteriEXT",
)

///|
extern "c" fn epoxy_glTextureParameteriEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glTextureParameteriEXT"

///|
pub fn gl_texture_parameteri_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glTextureParameteriEXT(
    d_glTextureParameteriEXT.get(),
    texture,
    target,
    pname,
    param,
  )
}

///|
let d_glTextureParameteriv : Dispatch = Dispatch::new("glTextureParameteriv")

///|
#borrow(param)
extern "c" fn epoxy_glTextureParameteriv(
  fp : CPtr,
  texture : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit = "epoxy_glTextureParameteriv"

///|
pub fn gl_texture_parameteriv(
  texture : UInt,
  pname : UInt,
  param : FixedArray[Int],
) -> Unit {
  epoxy_glTextureParameteriv(
    d_glTextureParameteriv.get(),
    texture,
    pname,
    param,
  )
}

///|
let d_glTextureParameterivEXT : Dispatch = Dispatch::new(
  "glTextureParameterivEXT",
)

///|
#borrow(params)
extern "c" fn epoxy_glTextureParameterivEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glTextureParameterivEXT"

///|
pub fn gl_texture_parameteriv_ext(
  texture : UInt,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glTextureParameterivEXT(
    d_glTextureParameterivEXT.get(),
    texture,
    target,
    pname,
    params,
  )
}

///|
let d_glTextureRangeAPPLE : Dispatch = Dispatch::new("glTextureRangeAPPLE")

///|
#borrow(pointer)
extern "c" fn epoxy_glTextureRangeAPPLE(
  fp : CPtr,
  target : UInt,
  length : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glTextureRangeAPPLE"

///|
pub fn gl_texture_range_apple(
  target : UInt,
  length : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glTextureRangeAPPLE(
    d_glTextureRangeAPPLE.get(),
    target,
    length,
    pointer,
  )
}

///|
let d_glTextureRenderbufferEXT : Dispatch = Dispatch::new(
  "glTextureRenderbufferEXT",
)

///|
extern "c" fn epoxy_glTextureRenderbufferEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  renderbuffer : UInt,
) -> Unit = "epoxy_glTextureRenderbufferEXT"

///|
pub fn gl_texture_renderbuffer_ext(
  texture : UInt,
  target : UInt,
  renderbuffer : UInt,
) -> Unit {
  epoxy_glTextureRenderbufferEXT(
    d_glTextureRenderbufferEXT.get(),
    texture,
    target,
    renderbuffer,
  )
}

///|
let d_glTextureStorage1D : Dispatch = Dispatch::new("glTextureStorage1D")

///|
extern "c" fn epoxy_glTextureStorage1D(
  fp : CPtr,
  texture : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit = "epoxy_glTextureStorage1D"

///|
pub fn gl_texture_storage1_d(
  texture : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit {
  epoxy_glTextureStorage1D(
    d_glTextureStorage1D.get(),
    texture,
    levels,
    internalformat,
    width,
  )
}

///|
let d_glTextureStorage1DEXT : Dispatch = Dispatch::new("glTextureStorage1DEXT")

///|
extern "c" fn epoxy_glTextureStorage1DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit = "epoxy_glTextureStorage1DEXT"

///|
pub fn gl_texture_storage1_dext(
  texture : UInt,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
) -> Unit {
  epoxy_glTextureStorage1DEXT(
    d_glTextureStorage1DEXT.get(),
    texture,
    target,
    levels,
    internalformat,
    width,
  )
}

///|
let d_glTextureStorage2D : Dispatch = Dispatch::new("glTextureStorage2D")

///|
extern "c" fn epoxy_glTextureStorage2D(
  fp : CPtr,
  texture : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glTextureStorage2D"

///|
pub fn gl_texture_storage2_d(
  texture : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glTextureStorage2D(
    d_glTextureStorage2D.get(),
    texture,
    levels,
    internalformat,
    width,
    height,
  )
}

///|
let d_glTextureStorage2DEXT : Dispatch = Dispatch::new("glTextureStorage2DEXT")

///|
extern "c" fn epoxy_glTextureStorage2DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glTextureStorage2DEXT"

///|
pub fn gl_texture_storage2_dext(
  texture : UInt,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
) -> Unit {
  epoxy_glTextureStorage2DEXT(
    d_glTextureStorage2DEXT.get(),
    texture,
    target,
    levels,
    internalformat,
    width,
    height,
  )
}

///|
let d_glTextureStorage2DMultisample : Dispatch = Dispatch::new(
  "glTextureStorage2DMultisample",
)

///|
extern "c" fn epoxy_glTextureStorage2DMultisample(
  fp : CPtr,
  texture : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTextureStorage2DMultisample"

///|
pub fn gl_texture_storage2_d_multisample(
  texture : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTextureStorage2DMultisample(
    d_glTextureStorage2DMultisample.get(),
    texture,
    samples,
    internalformat,
    width,
    height,
    fixedsamplelocations,
  )
}

///|
let d_glTextureStorage2DMultisampleEXT : Dispatch = Dispatch::new(
  "glTextureStorage2DMultisampleEXT",
)

///|
extern "c" fn epoxy_glTextureStorage2DMultisampleEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTextureStorage2DMultisampleEXT"

///|
pub fn gl_texture_storage2_d_multisample_ext(
  texture : UInt,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTextureStorage2DMultisampleEXT(
    d_glTextureStorage2DMultisampleEXT.get(),
    texture,
    target,
    samples,
    internalformat,
    width,
    height,
    fixedsamplelocations,
  )
}

///|
let d_glTextureStorage3D : Dispatch = Dispatch::new("glTextureStorage3D")

///|
extern "c" fn epoxy_glTextureStorage3D(
  fp : CPtr,
  texture : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit = "epoxy_glTextureStorage3D"

///|
pub fn gl_texture_storage3_d(
  texture : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit {
  epoxy_glTextureStorage3D(
    d_glTextureStorage3D.get(),
    texture,
    levels,
    internalformat,
    width,
    height,
    depth,
  )
}

///|
let d_glTextureStorage3DEXT : Dispatch = Dispatch::new("glTextureStorage3DEXT")

///|
extern "c" fn epoxy_glTextureStorage3DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit = "epoxy_glTextureStorage3DEXT"

///|
pub fn gl_texture_storage3_dext(
  texture : UInt,
  target : UInt,
  levels : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
) -> Unit {
  epoxy_glTextureStorage3DEXT(
    d_glTextureStorage3DEXT.get(),
    texture,
    target,
    levels,
    internalformat,
    width,
    height,
    depth,
  )
}

///|
let d_glTextureStorage3DMultisample : Dispatch = Dispatch::new(
  "glTextureStorage3DMultisample",
)

///|
extern "c" fn epoxy_glTextureStorage3DMultisample(
  fp : CPtr,
  texture : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTextureStorage3DMultisample"

///|
pub fn gl_texture_storage3_d_multisample(
  texture : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTextureStorage3DMultisample(
    d_glTextureStorage3DMultisample.get(),
    texture,
    samples,
    internalformat,
    width,
    height,
    depth,
    fixedsamplelocations,
  )
}

///|
let d_glTextureStorage3DMultisampleEXT : Dispatch = Dispatch::new(
  "glTextureStorage3DMultisampleEXT",
)

///|
extern "c" fn epoxy_glTextureStorage3DMultisampleEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit = "epoxy_glTextureStorage3DMultisampleEXT"

///|
pub fn gl_texture_storage3_d_multisample_ext(
  texture : UInt,
  target : UInt,
  samples : Int,
  internalformat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedsamplelocations : Bool,
) -> Unit {
  epoxy_glTextureStorage3DMultisampleEXT(
    d_glTextureStorage3DMultisampleEXT.get(),
    texture,
    target,
    samples,
    internalformat,
    width,
    height,
    depth,
    fixedsamplelocations,
  )
}

///|
let d_glTextureStorageMem1DEXT : Dispatch = Dispatch::new(
  "glTextureStorageMem1DEXT",
)

///|
extern "c" fn epoxy_glTextureStorageMem1DEXT(
  fp : CPtr,
  texture : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTextureStorageMem1DEXT"

///|
pub fn gl_texture_storage_mem1_dext(
  texture : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTextureStorageMem1DEXT(
    d_glTextureStorageMem1DEXT.get(),
    texture,
    levels,
    internalFormat,
    width,
    memory,
    offset,
  )
}

///|
let d_glTextureStorageMem2DEXT : Dispatch = Dispatch::new(
  "glTextureStorageMem2DEXT",
)

///|
extern "c" fn epoxy_glTextureStorageMem2DEXT(
  fp : CPtr,
  texture : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTextureStorageMem2DEXT"

///|
pub fn gl_texture_storage_mem2_dext(
  texture : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTextureStorageMem2DEXT(
    d_glTextureStorageMem2DEXT.get(),
    texture,
    levels,
    internalFormat,
    width,
    height,
    memory,
    offset,
  )
}

///|
let d_glTextureStorageMem2DMultisampleEXT : Dispatch = Dispatch::new(
  "glTextureStorageMem2DMultisampleEXT",
)

///|
extern "c" fn epoxy_glTextureStorageMem2DMultisampleEXT(
  fp : CPtr,
  texture : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTextureStorageMem2DMultisampleEXT"

///|
pub fn gl_texture_storage_mem2_d_multisample_ext(
  texture : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTextureStorageMem2DMultisampleEXT(
    d_glTextureStorageMem2DMultisampleEXT.get(),
    texture,
    samples,
    internalFormat,
    width,
    height,
    fixedSampleLocations,
    memory,
    offset,
  )
}

///|
let d_glTextureStorageMem3DEXT : Dispatch = Dispatch::new(
  "glTextureStorageMem3DEXT",
)

///|
extern "c" fn epoxy_glTextureStorageMem3DEXT(
  fp : CPtr,
  texture : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTextureStorageMem3DEXT"

///|
pub fn gl_texture_storage_mem3_dext(
  texture : UInt,
  levels : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTextureStorageMem3DEXT(
    d_glTextureStorageMem3DEXT.get(),
    texture,
    levels,
    internalFormat,
    width,
    height,
    depth,
    memory,
    offset,
  )
}

///|
let d_glTextureStorageMem3DMultisampleEXT : Dispatch = Dispatch::new(
  "glTextureStorageMem3DMultisampleEXT",
)

///|
extern "c" fn epoxy_glTextureStorageMem3DMultisampleEXT(
  fp : CPtr,
  texture : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit = "epoxy_glTextureStorageMem3DMultisampleEXT"

///|
pub fn gl_texture_storage_mem3_d_multisample_ext(
  texture : UInt,
  samples : Int,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  fixedSampleLocations : Bool,
  memory : UInt,
  offset : UInt64,
) -> Unit {
  epoxy_glTextureStorageMem3DMultisampleEXT(
    d_glTextureStorageMem3DMultisampleEXT.get(),
    texture,
    samples,
    internalFormat,
    width,
    height,
    depth,
    fixedSampleLocations,
    memory,
    offset,
  )
}

///|
let d_glTextureStorageSparseAMD : Dispatch = Dispatch::new(
  "glTextureStorageSparseAMD",
)

///|
extern "c" fn epoxy_glTextureStorageSparseAMD(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  layers : Int,
  flags : UInt,
) -> Unit = "epoxy_glTextureStorageSparseAMD"

///|
pub fn gl_texture_storage_sparse_amd(
  texture : UInt,
  target : UInt,
  internalFormat : UInt,
  width : Int,
  height : Int,
  depth : Int,
  layers : Int,
  flags : UInt,
) -> Unit {
  epoxy_glTextureStorageSparseAMD(
    d_glTextureStorageSparseAMD.get(),
    texture,
    target,
    internalFormat,
    width,
    height,
    depth,
    layers,
    flags,
  )
}

///|
let d_glTextureSubImage1D : Dispatch = Dispatch::new("glTextureSubImage1D")

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureSubImage1D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureSubImage1D"

///|
pub fn gl_texture_sub_image1_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureSubImage1D(
    d_glTextureSubImage1D.get(),
    texture,
    level,
    xoffset,
    width,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureSubImage1DEXT : Dispatch = Dispatch::new(
  "glTextureSubImage1DEXT",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureSubImage1DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureSubImage1DEXT"

///|
pub fn gl_texture_sub_image1_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  width : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureSubImage1DEXT(
    d_glTextureSubImage1DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    width,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureSubImage2D : Dispatch = Dispatch::new("glTextureSubImage2D")

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureSubImage2D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureSubImage2D"

///|
pub fn gl_texture_sub_image2_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureSubImage2D(
    d_glTextureSubImage2D.get(),
    texture,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureSubImage2DEXT : Dispatch = Dispatch::new(
  "glTextureSubImage2DEXT",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureSubImage2DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureSubImage2DEXT"

///|
pub fn gl_texture_sub_image2_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  width : Int,
  height : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureSubImage2DEXT(
    d_glTextureSubImage2DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    yoffset,
    width,
    height,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureSubImage3D : Dispatch = Dispatch::new("glTextureSubImage3D")

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureSubImage3D(
  fp : CPtr,
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureSubImage3D"

///|
pub fn gl_texture_sub_image3_d(
  texture : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureSubImage3D(
    d_glTextureSubImage3D.get(),
    texture,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureSubImage3DEXT : Dispatch = Dispatch::new(
  "glTextureSubImage3DEXT",
)

///|
#borrow(pixels)
extern "c" fn epoxy_glTextureSubImage3DEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit = "epoxy_glTextureSubImage3DEXT"

///|
pub fn gl_texture_sub_image3_dext(
  texture : UInt,
  target : UInt,
  level : Int,
  xoffset : Int,
  yoffset : Int,
  zoffset : Int,
  width : Int,
  height : Int,
  depth : Int,
  format : UInt,
  type_ : UInt,
  pixels : Bytes,
) -> Unit {
  epoxy_glTextureSubImage3DEXT(
    d_glTextureSubImage3DEXT.get(),
    texture,
    target,
    level,
    xoffset,
    yoffset,
    zoffset,
    width,
    height,
    depth,
    format,
    type_,
    pixels,
  )
}

///|
let d_glTextureView : Dispatch = Dispatch::with_aliases("glTextureView", [
  "glTextureViewEXT", "glTextureViewOES",
])

///|
extern "c" fn epoxy_glTextureView(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  origtexture : UInt,
  internalformat : UInt,
  minlevel : UInt,
  numlevels : UInt,
  minlayer : UInt,
  numlayers : UInt,
) -> Unit = "epoxy_glTextureView"

///|
pub fn gl_texture_view(
  texture : UInt,
  target : UInt,
  origtexture : UInt,
  internalformat : UInt,
  minlevel : UInt,
  numlevels : UInt,
  minlayer : UInt,
  numlayers : UInt,
) -> Unit {
  epoxy_glTextureView(
    d_glTextureView.get(),
    texture,
    target,
    origtexture,
    internalformat,
    minlevel,
    numlevels,
    minlayer,
    numlayers,
  )
}

///|
let d_glTextureViewEXT : Dispatch = Dispatch::with_aliases("glTextureViewEXT", [
  "glTextureView", "glTextureViewOES",
])

///|
extern "c" fn epoxy_glTextureViewEXT(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  origtexture : UInt,
  internalformat : UInt,
  minlevel : UInt,
  numlevels : UInt,
  minlayer : UInt,
  numlayers : UInt,
) -> Unit = "epoxy_glTextureViewEXT"

///|
pub fn gl_texture_view_ext(
  texture : UInt,
  target : UInt,
  origtexture : UInt,
  internalformat : UInt,
  minlevel : UInt,
  numlevels : UInt,
  minlayer : UInt,
  numlayers : UInt,
) -> Unit {
  epoxy_glTextureViewEXT(
    d_glTextureViewEXT.get(),
    texture,
    target,
    origtexture,
    internalformat,
    minlevel,
    numlevels,
    minlayer,
    numlayers,
  )
}

///|
let d_glTextureViewOES : Dispatch = Dispatch::with_aliases("glTextureViewOES", [
  "glTextureView", "glTextureViewEXT",
])

///|
extern "c" fn epoxy_glTextureViewOES(
  fp : CPtr,
  texture : UInt,
  target : UInt,
  origtexture : UInt,
  internalformat : UInt,
  minlevel : UInt,
  numlevels : UInt,
  minlayer : UInt,
  numlayers : UInt,
) -> Unit = "epoxy_glTextureViewOES"

///|
pub fn gl_texture_view_oes(
  texture : UInt,
  target : UInt,
  origtexture : UInt,
  internalformat : UInt,
  minlevel : UInt,
  numlevels : UInt,
  minlayer : UInt,
  numlayers : UInt,
) -> Unit {
  epoxy_glTextureViewOES(
    d_glTextureViewOES.get(),
    texture,
    target,
    origtexture,
    internalformat,
    minlevel,
    numlevels,
    minlayer,
    numlayers,
  )
}

///|
let d_glTrackMatrixNV : Dispatch = Dispatch::new("glTrackMatrixNV")

///|
extern "c" fn epoxy_glTrackMatrixNV(
  fp : CPtr,
  target : UInt,
  address : UInt,
  matrix : UInt,
  transform : UInt,
) -> Unit = "epoxy_glTrackMatrixNV"

///|
pub fn gl_track_matrix_nv(
  target : UInt,
  address : UInt,
  matrix : UInt,
  transform : UInt,
) -> Unit {
  epoxy_glTrackMatrixNV(
    d_glTrackMatrixNV.get(),
    target,
    address,
    matrix,
    transform,
  )
}

///|
let d_glTransformFeedbackAttribsNV : Dispatch = Dispatch::new(
  "glTransformFeedbackAttribsNV",
)

///|
#borrow(attribs)
extern "c" fn epoxy_glTransformFeedbackAttribsNV(
  fp : CPtr,
  count : Int,
  attribs : FixedArray[Int],
  bufferMode : UInt,
) -> Unit = "epoxy_glTransformFeedbackAttribsNV"

///|
pub fn gl_transform_feedback_attribs_nv(
  count : Int,
  attribs : FixedArray[Int],
  bufferMode : UInt,
) -> Unit {
  epoxy_glTransformFeedbackAttribsNV(
    d_glTransformFeedbackAttribsNV.get(),
    count,
    attribs,
    bufferMode,
  )
}

///|
let d_glTransformFeedbackBufferBase : Dispatch = Dispatch::new(
  "glTransformFeedbackBufferBase",
)

///|
extern "c" fn epoxy_glTransformFeedbackBufferBase(
  fp : CPtr,
  xfb : UInt,
  index : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glTransformFeedbackBufferBase"

///|
pub fn gl_transform_feedback_buffer_base(
  xfb : UInt,
  index : UInt,
  buffer : UInt,
) -> Unit {
  epoxy_glTransformFeedbackBufferBase(
    d_glTransformFeedbackBufferBase.get(),
    xfb,
    index,
    buffer,
  )
}

///|
let d_glTransformFeedbackBufferRange : Dispatch = Dispatch::new(
  "glTransformFeedbackBufferRange",
)

///|
extern "c" fn epoxy_glTransformFeedbackBufferRange(
  fp : CPtr,
  xfb : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit = "epoxy_glTransformFeedbackBufferRange"

///|
pub fn gl_transform_feedback_buffer_range(
  xfb : UInt,
  index : UInt,
  buffer : UInt,
  offset : Int64,
  size : Int64,
) -> Unit {
  epoxy_glTransformFeedbackBufferRange(
    d_glTransformFeedbackBufferRange.get(),
    xfb,
    index,
    buffer,
    offset,
    size,
  )
}

///|
let d_glTransformFeedbackStreamAttribsNV : Dispatch = Dispatch::new(
  "glTransformFeedbackStreamAttribsNV",
)

///|
#borrow(attribs, bufstreams)
extern "c" fn epoxy_glTransformFeedbackStreamAttribsNV(
  fp : CPtr,
  count : Int,
  attribs : FixedArray[Int],
  nbuffers : Int,
  bufstreams : FixedArray[Int],
  bufferMode : UInt,
) -> Unit = "epoxy_glTransformFeedbackStreamAttribsNV"

///|
pub fn gl_transform_feedback_stream_attribs_nv(
  count : Int,
  attribs : FixedArray[Int],
  nbuffers : Int,
  bufstreams : FixedArray[Int],
  bufferMode : UInt,
) -> Unit {
  epoxy_glTransformFeedbackStreamAttribsNV(
    d_glTransformFeedbackStreamAttribsNV.get(),
    count,
    attribs,
    nbuffers,
    bufstreams,
    bufferMode,
  )
}

///|
let d_glTransformFeedbackVaryings : Dispatch = Dispatch::with_aliases(
  "glTransformFeedbackVaryings",
  ["glTransformFeedbackVaryingsEXT"],
)

///|
#borrow(varyings)
extern "c" fn epoxy_glTransformFeedbackVaryings(
  fp : CPtr,
  program : UInt,
  count : Int,
  varyings : FixedArray[Bytes],
  bufferMode : UInt,
) -> Unit = "epoxy_glTransformFeedbackVaryings"

///|
pub fn gl_transform_feedback_varyings(
  program : UInt,
  count : Int,
  varyings : FixedArray[Bytes],
  bufferMode : UInt,
) -> Unit {
  epoxy_glTransformFeedbackVaryings(
    d_glTransformFeedbackVaryings.get(),
    program,
    count,
    varyings,
    bufferMode,
  )
}

///|
let d_glTransformFeedbackVaryingsEXT : Dispatch = Dispatch::with_aliases(
  "glTransformFeedbackVaryingsEXT",
  ["glTransformFeedbackVaryings"],
)

///|
#borrow(varyings)
extern "c" fn epoxy_glTransformFeedbackVaryingsEXT(
  fp : CPtr,
  program : UInt,
  count : Int,
  varyings : FixedArray[Bytes],
  bufferMode : UInt,
) -> Unit = "epoxy_glTransformFeedbackVaryingsEXT"

///|
pub fn gl_transform_feedback_varyings_ext(
  program : UInt,
  count : Int,
  varyings : FixedArray[Bytes],
  bufferMode : UInt,
) -> Unit {
  epoxy_glTransformFeedbackVaryingsEXT(
    d_glTransformFeedbackVaryingsEXT.get(),
    program,
    count,
    varyings,
    bufferMode,
  )
}

///|
let d_glTransformFeedbackVaryingsNV : Dispatch = Dispatch::new(
  "glTransformFeedbackVaryingsNV",
)

///|
#borrow(locations)
extern "c" fn epoxy_glTransformFeedbackVaryingsNV(
  fp : CPtr,
  program : UInt,
  count : Int,
  locations : FixedArray[Int],
  bufferMode : UInt,
) -> Unit = "epoxy_glTransformFeedbackVaryingsNV"

///|
pub fn gl_transform_feedback_varyings_nv(
  program : UInt,
  count : Int,
  locations : FixedArray[Int],
  bufferMode : UInt,
) -> Unit {
  epoxy_glTransformFeedbackVaryingsNV(
    d_glTransformFeedbackVaryingsNV.get(),
    program,
    count,
    locations,
    bufferMode,
  )
}

///|
let d_glTransformPathNV : Dispatch = Dispatch::new("glTransformPathNV")

///|
#borrow(transformValues)
extern "c" fn epoxy_glTransformPathNV(
  fp : CPtr,
  resultPath : UInt,
  srcPath : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit = "epoxy_glTransformPathNV"

///|
pub fn gl_transform_path_nv(
  resultPath : UInt,
  srcPath : UInt,
  transformType : UInt,
  transformValues : FixedArray[Float],
) -> Unit {
  epoxy_glTransformPathNV(
    d_glTransformPathNV.get(),
    resultPath,
    srcPath,
    transformType,
    transformValues,
  )
}

///|
let d_glTranslated : Dispatch = Dispatch::new("glTranslated")

///|
extern "c" fn epoxy_glTranslated(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glTranslated"

///|
pub fn gl_translated(x : Double, y : Double, z : Double) -> Unit {
  epoxy_glTranslated(d_glTranslated.get(), x, y, z)
}

///|
let d_glTranslatef : Dispatch = Dispatch::new("glTranslatef")

///|
extern "c" fn epoxy_glTranslatef(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glTranslatef"

///|
pub fn gl_translatef(x : Float, y : Float, z : Float) -> Unit {
  epoxy_glTranslatef(d_glTranslatef.get(), x, y, z)
}

///|
let d_glTranslatex : Dispatch = Dispatch::new("glTranslatex")

///|
extern "c" fn epoxy_glTranslatex(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glTranslatex"

///|
pub fn gl_translatex(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glTranslatex(d_glTranslatex.get(), x, y, z)
}

///|
let d_glTranslatexOES : Dispatch = Dispatch::new("glTranslatexOES")

///|
extern "c" fn epoxy_glTranslatexOES(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glTranslatexOES"

///|
pub fn gl_translatex_oes(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glTranslatexOES(d_glTranslatexOES.get(), x, y, z)
}

///|
let d_glUniform1d : Dispatch = Dispatch::new("glUniform1d")

///|
extern "c" fn epoxy_glUniform1d(fp : CPtr, location : Int, x : Double) -> Unit = "epoxy_glUniform1d"

///|
pub fn gl_uniform1d(location : Int, x : Double) -> Unit {
  epoxy_glUniform1d(d_glUniform1d.get(), location, x)
}

///|
let d_glUniform1dv : Dispatch = Dispatch::new("glUniform1dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniform1dv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniform1dv"

///|
pub fn gl_uniform1dv(
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniform1dv(d_glUniform1dv.get(), location, count, value)
}

///|
let d_glUniform1f : Dispatch = Dispatch::with_aliases("glUniform1f", [
  "glUniform1fARB",
])

///|
extern "c" fn epoxy_glUniform1f(fp : CPtr, location : Int, v0 : Float) -> Unit = "epoxy_glUniform1f"

///|
pub fn gl_uniform1f(location : Int, v0 : Float) -> Unit {
  epoxy_glUniform1f(d_glUniform1f.get(), location, v0)
}

///|
let d_glUniform1fARB : Dispatch = Dispatch::with_aliases("glUniform1fARB", [
  "glUniform1f",
])

///|
extern "c" fn epoxy_glUniform1fARB(
  fp : CPtr,
  location : Int,
  v0 : Float,
) -> Unit = "epoxy_glUniform1fARB"

///|
pub fn gl_uniform1f_arb(location : Int, v0 : Float) -> Unit {
  epoxy_glUniform1fARB(d_glUniform1fARB.get(), location, v0)
}

///|
let d_glUniform1fv : Dispatch = Dispatch::with_aliases("glUniform1fv", [
  "glUniform1fvARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform1fv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform1fv"

///|
pub fn gl_uniform1fv(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform1fv(d_glUniform1fv.get(), location, count, value)
}

///|
let d_glUniform1fvARB : Dispatch = Dispatch::with_aliases("glUniform1fvARB", [
  "glUniform1fv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform1fvARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform1fvARB"

///|
pub fn gl_uniform1fv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform1fvARB(d_glUniform1fvARB.get(), location, count, value)
}

///|
let d_glUniform1i : Dispatch = Dispatch::with_aliases("glUniform1i", [
  "glUniform1iARB",
])

///|
extern "c" fn epoxy_glUniform1i(fp : CPtr, location : Int, v0 : Int) -> Unit = "epoxy_glUniform1i"

///|
pub fn gl_uniform1i(location : Int, v0 : Int) -> Unit {
  epoxy_glUniform1i(d_glUniform1i.get(), location, v0)
}

///|
let d_glUniform1i64ARB : Dispatch = Dispatch::new("glUniform1i64ARB")

///|
extern "c" fn epoxy_glUniform1i64ARB(
  fp : CPtr,
  location : Int,
  x : Int64,
) -> Unit = "epoxy_glUniform1i64ARB"

///|
pub fn gl_uniform1i64_arb(location : Int, x : Int64) -> Unit {
  epoxy_glUniform1i64ARB(d_glUniform1i64ARB.get(), location, x)
}

///|
let d_glUniform1i64NV : Dispatch = Dispatch::new("glUniform1i64NV")

///|
extern "c" fn epoxy_glUniform1i64NV(
  fp : CPtr,
  location : Int,
  x : Int64,
) -> Unit = "epoxy_glUniform1i64NV"

///|
pub fn gl_uniform1i64_nv(location : Int, x : Int64) -> Unit {
  epoxy_glUniform1i64NV(d_glUniform1i64NV.get(), location, x)
}

///|
let d_glUniform1i64vARB : Dispatch = Dispatch::new("glUniform1i64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform1i64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform1i64vARB"

///|
pub fn gl_uniform1i64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform1i64vARB(d_glUniform1i64vARB.get(), location, count, value)
}

///|
let d_glUniform1i64vNV : Dispatch = Dispatch::new("glUniform1i64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform1i64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform1i64vNV"

///|
pub fn gl_uniform1i64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform1i64vNV(d_glUniform1i64vNV.get(), location, count, value)
}

///|
let d_glUniform1iARB : Dispatch = Dispatch::with_aliases("glUniform1iARB", [
  "glUniform1i",
])

///|
extern "c" fn epoxy_glUniform1iARB(fp : CPtr, location : Int, v0 : Int) -> Unit = "epoxy_glUniform1iARB"

///|
pub fn gl_uniform1i_arb(location : Int, v0 : Int) -> Unit {
  epoxy_glUniform1iARB(d_glUniform1iARB.get(), location, v0)
}

///|
let d_glUniform1iv : Dispatch = Dispatch::with_aliases("glUniform1iv", [
  "glUniform1ivARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform1iv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform1iv"

///|
pub fn gl_uniform1iv(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform1iv(d_glUniform1iv.get(), location, count, value)
}

///|
let d_glUniform1ivARB : Dispatch = Dispatch::with_aliases("glUniform1ivARB", [
  "glUniform1iv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform1ivARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform1ivARB"

///|
pub fn gl_uniform1iv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform1ivARB(d_glUniform1ivARB.get(), location, count, value)
}

///|
let d_glUniform1ui : Dispatch = Dispatch::with_aliases("glUniform1ui", [
  "glUniform1uiEXT",
])

///|
extern "c" fn epoxy_glUniform1ui(fp : CPtr, location : Int, v0 : UInt) -> Unit = "epoxy_glUniform1ui"

///|
pub fn gl_uniform1ui(location : Int, v0 : UInt) -> Unit {
  epoxy_glUniform1ui(d_glUniform1ui.get(), location, v0)
}

///|
let d_glUniform1ui64ARB : Dispatch = Dispatch::new("glUniform1ui64ARB")

///|
extern "c" fn epoxy_glUniform1ui64ARB(
  fp : CPtr,
  location : Int,
  x : UInt64,
) -> Unit = "epoxy_glUniform1ui64ARB"

///|
pub fn gl_uniform1ui64_arb(location : Int, x : UInt64) -> Unit {
  epoxy_glUniform1ui64ARB(d_glUniform1ui64ARB.get(), location, x)
}

///|
let d_glUniform1ui64NV : Dispatch = Dispatch::new("glUniform1ui64NV")

///|
extern "c" fn epoxy_glUniform1ui64NV(
  fp : CPtr,
  location : Int,
  x : UInt64,
) -> Unit = "epoxy_glUniform1ui64NV"

///|
pub fn gl_uniform1ui64_nv(location : Int, x : UInt64) -> Unit {
  epoxy_glUniform1ui64NV(d_glUniform1ui64NV.get(), location, x)
}

///|
let d_glUniform1ui64vARB : Dispatch = Dispatch::new("glUniform1ui64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform1ui64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform1ui64vARB"

///|
pub fn gl_uniform1ui64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform1ui64vARB(d_glUniform1ui64vARB.get(), location, count, value)
}

///|
let d_glUniform1ui64vNV : Dispatch = Dispatch::new("glUniform1ui64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform1ui64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform1ui64vNV"

///|
pub fn gl_uniform1ui64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform1ui64vNV(d_glUniform1ui64vNV.get(), location, count, value)
}

///|
let d_glUniform1uiEXT : Dispatch = Dispatch::with_aliases("glUniform1uiEXT", [
  "glUniform1ui",
])

///|
extern "c" fn epoxy_glUniform1uiEXT(
  fp : CPtr,
  location : Int,
  v0 : UInt,
) -> Unit = "epoxy_glUniform1uiEXT"

///|
pub fn gl_uniform1ui_ext(location : Int, v0 : UInt) -> Unit {
  epoxy_glUniform1uiEXT(d_glUniform1uiEXT.get(), location, v0)
}

///|
let d_glUniform1uiv : Dispatch = Dispatch::with_aliases("glUniform1uiv", [
  "glUniform1uivEXT",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform1uiv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform1uiv"

///|
pub fn gl_uniform1uiv(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform1uiv(d_glUniform1uiv.get(), location, count, value)
}

///|
let d_glUniform1uivEXT : Dispatch = Dispatch::with_aliases("glUniform1uivEXT", [
  "glUniform1uiv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform1uivEXT(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform1uivEXT"

///|
pub fn gl_uniform1uiv_ext(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform1uivEXT(d_glUniform1uivEXT.get(), location, count, value)
}

///|
let d_glUniform2d : Dispatch = Dispatch::new("glUniform2d")

///|
extern "c" fn epoxy_glUniform2d(
  fp : CPtr,
  location : Int,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glUniform2d"

///|
pub fn gl_uniform2d(location : Int, x : Double, y : Double) -> Unit {
  epoxy_glUniform2d(d_glUniform2d.get(), location, x, y)
}

///|
let d_glUniform2dv : Dispatch = Dispatch::new("glUniform2dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniform2dv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniform2dv"

///|
pub fn gl_uniform2dv(
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniform2dv(d_glUniform2dv.get(), location, count, value)
}

///|
let d_glUniform2f : Dispatch = Dispatch::with_aliases("glUniform2f", [
  "glUniform2fARB",
])

///|
extern "c" fn epoxy_glUniform2f(
  fp : CPtr,
  location : Int,
  v0 : Float,
  v1 : Float,
) -> Unit = "epoxy_glUniform2f"

///|
pub fn gl_uniform2f(location : Int, v0 : Float, v1 : Float) -> Unit {
  epoxy_glUniform2f(d_glUniform2f.get(), location, v0, v1)
}

///|
let d_glUniform2fARB : Dispatch = Dispatch::with_aliases("glUniform2fARB", [
  "glUniform2f",
])

///|
extern "c" fn epoxy_glUniform2fARB(
  fp : CPtr,
  location : Int,
  v0 : Float,
  v1 : Float,
) -> Unit = "epoxy_glUniform2fARB"

///|
pub fn gl_uniform2f_arb(location : Int, v0 : Float, v1 : Float) -> Unit {
  epoxy_glUniform2fARB(d_glUniform2fARB.get(), location, v0, v1)
}

///|
let d_glUniform2fv : Dispatch = Dispatch::with_aliases("glUniform2fv", [
  "glUniform2fvARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform2fv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform2fv"

///|
pub fn gl_uniform2fv(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform2fv(d_glUniform2fv.get(), location, count, value)
}

///|
let d_glUniform2fvARB : Dispatch = Dispatch::with_aliases("glUniform2fvARB", [
  "glUniform2fv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform2fvARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform2fvARB"

///|
pub fn gl_uniform2fv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform2fvARB(d_glUniform2fvARB.get(), location, count, value)
}

///|
let d_glUniform2i : Dispatch = Dispatch::with_aliases("glUniform2i", [
  "glUniform2iARB",
])

///|
extern "c" fn epoxy_glUniform2i(
  fp : CPtr,
  location : Int,
  v0 : Int,
  v1 : Int,
) -> Unit = "epoxy_glUniform2i"

///|
pub fn gl_uniform2i(location : Int, v0 : Int, v1 : Int) -> Unit {
  epoxy_glUniform2i(d_glUniform2i.get(), location, v0, v1)
}

///|
let d_glUniform2i64ARB : Dispatch = Dispatch::new("glUniform2i64ARB")

///|
extern "c" fn epoxy_glUniform2i64ARB(
  fp : CPtr,
  location : Int,
  x : Int64,
  y : Int64,
) -> Unit = "epoxy_glUniform2i64ARB"

///|
pub fn gl_uniform2i64_arb(location : Int, x : Int64, y : Int64) -> Unit {
  epoxy_glUniform2i64ARB(d_glUniform2i64ARB.get(), location, x, y)
}

///|
let d_glUniform2i64NV : Dispatch = Dispatch::new("glUniform2i64NV")

///|
extern "c" fn epoxy_glUniform2i64NV(
  fp : CPtr,
  location : Int,
  x : Int64,
  y : Int64,
) -> Unit = "epoxy_glUniform2i64NV"

///|
pub fn gl_uniform2i64_nv(location : Int, x : Int64, y : Int64) -> Unit {
  epoxy_glUniform2i64NV(d_glUniform2i64NV.get(), location, x, y)
}

///|
let d_glUniform2i64vARB : Dispatch = Dispatch::new("glUniform2i64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform2i64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform2i64vARB"

///|
pub fn gl_uniform2i64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform2i64vARB(d_glUniform2i64vARB.get(), location, count, value)
}

///|
let d_glUniform2i64vNV : Dispatch = Dispatch::new("glUniform2i64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform2i64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform2i64vNV"

///|
pub fn gl_uniform2i64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform2i64vNV(d_glUniform2i64vNV.get(), location, count, value)
}

///|
let d_glUniform2iARB : Dispatch = Dispatch::with_aliases("glUniform2iARB", [
  "glUniform2i",
])

///|
extern "c" fn epoxy_glUniform2iARB(
  fp : CPtr,
  location : Int,
  v0 : Int,
  v1 : Int,
) -> Unit = "epoxy_glUniform2iARB"

///|
pub fn gl_uniform2i_arb(location : Int, v0 : Int, v1 : Int) -> Unit {
  epoxy_glUniform2iARB(d_glUniform2iARB.get(), location, v0, v1)
}

///|
let d_glUniform2iv : Dispatch = Dispatch::with_aliases("glUniform2iv", [
  "glUniform2ivARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform2iv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform2iv"

///|
pub fn gl_uniform2iv(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform2iv(d_glUniform2iv.get(), location, count, value)
}

///|
let d_glUniform2ivARB : Dispatch = Dispatch::with_aliases("glUniform2ivARB", [
  "glUniform2iv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform2ivARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform2ivARB"

///|
pub fn gl_uniform2iv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform2ivARB(d_glUniform2ivARB.get(), location, count, value)
}

///|
let d_glUniform2ui : Dispatch = Dispatch::with_aliases("glUniform2ui", [
  "glUniform2uiEXT",
])

///|
extern "c" fn epoxy_glUniform2ui(
  fp : CPtr,
  location : Int,
  v0 : UInt,
  v1 : UInt,
) -> Unit = "epoxy_glUniform2ui"

///|
pub fn gl_uniform2ui(location : Int, v0 : UInt, v1 : UInt) -> Unit {
  epoxy_glUniform2ui(d_glUniform2ui.get(), location, v0, v1)
}

///|
let d_glUniform2ui64ARB : Dispatch = Dispatch::new("glUniform2ui64ARB")

///|
extern "c" fn epoxy_glUniform2ui64ARB(
  fp : CPtr,
  location : Int,
  x : UInt64,
  y : UInt64,
) -> Unit = "epoxy_glUniform2ui64ARB"

///|
pub fn gl_uniform2ui64_arb(location : Int, x : UInt64, y : UInt64) -> Unit {
  epoxy_glUniform2ui64ARB(d_glUniform2ui64ARB.get(), location, x, y)
}

///|
let d_glUniform2ui64NV : Dispatch = Dispatch::new("glUniform2ui64NV")

///|
extern "c" fn epoxy_glUniform2ui64NV(
  fp : CPtr,
  location : Int,
  x : UInt64,
  y : UInt64,
) -> Unit = "epoxy_glUniform2ui64NV"

///|
pub fn gl_uniform2ui64_nv(location : Int, x : UInt64, y : UInt64) -> Unit {
  epoxy_glUniform2ui64NV(d_glUniform2ui64NV.get(), location, x, y)
}

///|
let d_glUniform2ui64vARB : Dispatch = Dispatch::new("glUniform2ui64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform2ui64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform2ui64vARB"

///|
pub fn gl_uniform2ui64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform2ui64vARB(d_glUniform2ui64vARB.get(), location, count, value)
}

///|
let d_glUniform2ui64vNV : Dispatch = Dispatch::new("glUniform2ui64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform2ui64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform2ui64vNV"

///|
pub fn gl_uniform2ui64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform2ui64vNV(d_glUniform2ui64vNV.get(), location, count, value)
}

///|
let d_glUniform2uiEXT : Dispatch = Dispatch::with_aliases("glUniform2uiEXT", [
  "glUniform2ui",
])

///|
extern "c" fn epoxy_glUniform2uiEXT(
  fp : CPtr,
  location : Int,
  v0 : UInt,
  v1 : UInt,
) -> Unit = "epoxy_glUniform2uiEXT"

///|
pub fn gl_uniform2ui_ext(location : Int, v0 : UInt, v1 : UInt) -> Unit {
  epoxy_glUniform2uiEXT(d_glUniform2uiEXT.get(), location, v0, v1)
}

///|
let d_glUniform2uiv : Dispatch = Dispatch::with_aliases("glUniform2uiv", [
  "glUniform2uivEXT",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform2uiv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform2uiv"

///|
pub fn gl_uniform2uiv(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform2uiv(d_glUniform2uiv.get(), location, count, value)
}

///|
let d_glUniform2uivEXT : Dispatch = Dispatch::with_aliases("glUniform2uivEXT", [
  "glUniform2uiv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform2uivEXT(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform2uivEXT"

///|
pub fn gl_uniform2uiv_ext(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform2uivEXT(d_glUniform2uivEXT.get(), location, count, value)
}

///|
let d_glUniform3d : Dispatch = Dispatch::new("glUniform3d")

///|
extern "c" fn epoxy_glUniform3d(
  fp : CPtr,
  location : Int,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glUniform3d"

///|
pub fn gl_uniform3d(location : Int, x : Double, y : Double, z : Double) -> Unit {
  epoxy_glUniform3d(d_glUniform3d.get(), location, x, y, z)
}

///|
let d_glUniform3dv : Dispatch = Dispatch::new("glUniform3dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniform3dv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniform3dv"

///|
pub fn gl_uniform3dv(
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniform3dv(d_glUniform3dv.get(), location, count, value)
}

///|
let d_glUniform3f : Dispatch = Dispatch::with_aliases("glUniform3f", [
  "glUniform3fARB",
])

///|
extern "c" fn epoxy_glUniform3f(
  fp : CPtr,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
) -> Unit = "epoxy_glUniform3f"

///|
pub fn gl_uniform3f(location : Int, v0 : Float, v1 : Float, v2 : Float) -> Unit {
  epoxy_glUniform3f(d_glUniform3f.get(), location, v0, v1, v2)
}

///|
let d_glUniform3fARB : Dispatch = Dispatch::with_aliases("glUniform3fARB", [
  "glUniform3f",
])

///|
extern "c" fn epoxy_glUniform3fARB(
  fp : CPtr,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
) -> Unit = "epoxy_glUniform3fARB"

///|
pub fn gl_uniform3f_arb(
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
) -> Unit {
  epoxy_glUniform3fARB(d_glUniform3fARB.get(), location, v0, v1, v2)
}

///|
let d_glUniform3fv : Dispatch = Dispatch::with_aliases("glUniform3fv", [
  "glUniform3fvARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform3fv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform3fv"

///|
pub fn gl_uniform3fv(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform3fv(d_glUniform3fv.get(), location, count, value)
}

///|
let d_glUniform3fvARB : Dispatch = Dispatch::with_aliases("glUniform3fvARB", [
  "glUniform3fv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform3fvARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform3fvARB"

///|
pub fn gl_uniform3fv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform3fvARB(d_glUniform3fvARB.get(), location, count, value)
}

///|
let d_glUniform3i : Dispatch = Dispatch::with_aliases("glUniform3i", [
  "glUniform3iARB",
])

///|
extern "c" fn epoxy_glUniform3i(
  fp : CPtr,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit = "epoxy_glUniform3i"

///|
pub fn gl_uniform3i(location : Int, v0 : Int, v1 : Int, v2 : Int) -> Unit {
  epoxy_glUniform3i(d_glUniform3i.get(), location, v0, v1, v2)
}

///|
let d_glUniform3i64ARB : Dispatch = Dispatch::new("glUniform3i64ARB")

///|
extern "c" fn epoxy_glUniform3i64ARB(
  fp : CPtr,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit = "epoxy_glUniform3i64ARB"

///|
pub fn gl_uniform3i64_arb(
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit {
  epoxy_glUniform3i64ARB(d_glUniform3i64ARB.get(), location, x, y, z)
}

///|
let d_glUniform3i64NV : Dispatch = Dispatch::new("glUniform3i64NV")

///|
extern "c" fn epoxy_glUniform3i64NV(
  fp : CPtr,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit = "epoxy_glUniform3i64NV"

///|
pub fn gl_uniform3i64_nv(
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit {
  epoxy_glUniform3i64NV(d_glUniform3i64NV.get(), location, x, y, z)
}

///|
let d_glUniform3i64vARB : Dispatch = Dispatch::new("glUniform3i64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform3i64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform3i64vARB"

///|
pub fn gl_uniform3i64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform3i64vARB(d_glUniform3i64vARB.get(), location, count, value)
}

///|
let d_glUniform3i64vNV : Dispatch = Dispatch::new("glUniform3i64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform3i64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform3i64vNV"

///|
pub fn gl_uniform3i64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform3i64vNV(d_glUniform3i64vNV.get(), location, count, value)
}

///|
let d_glUniform3iARB : Dispatch = Dispatch::with_aliases("glUniform3iARB", [
  "glUniform3i",
])

///|
extern "c" fn epoxy_glUniform3iARB(
  fp : CPtr,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
) -> Unit = "epoxy_glUniform3iARB"

///|
pub fn gl_uniform3i_arb(location : Int, v0 : Int, v1 : Int, v2 : Int) -> Unit {
  epoxy_glUniform3iARB(d_glUniform3iARB.get(), location, v0, v1, v2)
}

///|
let d_glUniform3iv : Dispatch = Dispatch::with_aliases("glUniform3iv", [
  "glUniform3ivARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform3iv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform3iv"

///|
pub fn gl_uniform3iv(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform3iv(d_glUniform3iv.get(), location, count, value)
}

///|
let d_glUniform3ivARB : Dispatch = Dispatch::with_aliases("glUniform3ivARB", [
  "glUniform3iv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform3ivARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform3ivARB"

///|
pub fn gl_uniform3iv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform3ivARB(d_glUniform3ivARB.get(), location, count, value)
}

///|
let d_glUniform3ui : Dispatch = Dispatch::with_aliases("glUniform3ui", [
  "glUniform3uiEXT",
])

///|
extern "c" fn epoxy_glUniform3ui(
  fp : CPtr,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
) -> Unit = "epoxy_glUniform3ui"

///|
pub fn gl_uniform3ui(location : Int, v0 : UInt, v1 : UInt, v2 : UInt) -> Unit {
  epoxy_glUniform3ui(d_glUniform3ui.get(), location, v0, v1, v2)
}

///|
let d_glUniform3ui64ARB : Dispatch = Dispatch::new("glUniform3ui64ARB")

///|
extern "c" fn epoxy_glUniform3ui64ARB(
  fp : CPtr,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit = "epoxy_glUniform3ui64ARB"

///|
pub fn gl_uniform3ui64_arb(
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit {
  epoxy_glUniform3ui64ARB(d_glUniform3ui64ARB.get(), location, x, y, z)
}

///|
let d_glUniform3ui64NV : Dispatch = Dispatch::new("glUniform3ui64NV")

///|
extern "c" fn epoxy_glUniform3ui64NV(
  fp : CPtr,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit = "epoxy_glUniform3ui64NV"

///|
pub fn gl_uniform3ui64_nv(
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit {
  epoxy_glUniform3ui64NV(d_glUniform3ui64NV.get(), location, x, y, z)
}

///|
let d_glUniform3ui64vARB : Dispatch = Dispatch::new("glUniform3ui64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform3ui64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform3ui64vARB"

///|
pub fn gl_uniform3ui64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform3ui64vARB(d_glUniform3ui64vARB.get(), location, count, value)
}

///|
let d_glUniform3ui64vNV : Dispatch = Dispatch::new("glUniform3ui64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform3ui64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform3ui64vNV"

///|
pub fn gl_uniform3ui64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform3ui64vNV(d_glUniform3ui64vNV.get(), location, count, value)
}

///|
let d_glUniform3uiEXT : Dispatch = Dispatch::with_aliases("glUniform3uiEXT", [
  "glUniform3ui",
])

///|
extern "c" fn epoxy_glUniform3uiEXT(
  fp : CPtr,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
) -> Unit = "epoxy_glUniform3uiEXT"

///|
pub fn gl_uniform3ui_ext(
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
) -> Unit {
  epoxy_glUniform3uiEXT(d_glUniform3uiEXT.get(), location, v0, v1, v2)
}

///|
let d_glUniform3uiv : Dispatch = Dispatch::with_aliases("glUniform3uiv", [
  "glUniform3uivEXT",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform3uiv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform3uiv"

///|
pub fn gl_uniform3uiv(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform3uiv(d_glUniform3uiv.get(), location, count, value)
}

///|
let d_glUniform3uivEXT : Dispatch = Dispatch::with_aliases("glUniform3uivEXT", [
  "glUniform3uiv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform3uivEXT(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform3uivEXT"

///|
pub fn gl_uniform3uiv_ext(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform3uivEXT(d_glUniform3uivEXT.get(), location, count, value)
}

///|
let d_glUniform4d : Dispatch = Dispatch::new("glUniform4d")

///|
extern "c" fn epoxy_glUniform4d(
  fp : CPtr,
  location : Int,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glUniform4d"

///|
pub fn gl_uniform4d(
  location : Int,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glUniform4d(d_glUniform4d.get(), location, x, y, z, w)
}

///|
let d_glUniform4dv : Dispatch = Dispatch::new("glUniform4dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniform4dv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniform4dv"

///|
pub fn gl_uniform4dv(
  location : Int,
  count : Int,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniform4dv(d_glUniform4dv.get(), location, count, value)
}

///|
let d_glUniform4f : Dispatch = Dispatch::with_aliases("glUniform4f", [
  "glUniform4fARB",
])

///|
extern "c" fn epoxy_glUniform4f(
  fp : CPtr,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit = "epoxy_glUniform4f"

///|
pub fn gl_uniform4f(
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit {
  epoxy_glUniform4f(d_glUniform4f.get(), location, v0, v1, v2, v3)
}

///|
let d_glUniform4fARB : Dispatch = Dispatch::with_aliases("glUniform4fARB", [
  "glUniform4f",
])

///|
extern "c" fn epoxy_glUniform4fARB(
  fp : CPtr,
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit = "epoxy_glUniform4fARB"

///|
pub fn gl_uniform4f_arb(
  location : Int,
  v0 : Float,
  v1 : Float,
  v2 : Float,
  v3 : Float,
) -> Unit {
  epoxy_glUniform4fARB(d_glUniform4fARB.get(), location, v0, v1, v2, v3)
}

///|
let d_glUniform4fv : Dispatch = Dispatch::with_aliases("glUniform4fv", [
  "glUniform4fvARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform4fv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform4fv"

///|
pub fn gl_uniform4fv(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform4fv(d_glUniform4fv.get(), location, count, value)
}

///|
let d_glUniform4fvARB : Dispatch = Dispatch::with_aliases("glUniform4fvARB", [
  "glUniform4fv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform4fvARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniform4fvARB"

///|
pub fn gl_uniform4fv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniform4fvARB(d_glUniform4fvARB.get(), location, count, value)
}

///|
let d_glUniform4i : Dispatch = Dispatch::with_aliases("glUniform4i", [
  "glUniform4iARB",
])

///|
extern "c" fn epoxy_glUniform4i(
  fp : CPtr,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit = "epoxy_glUniform4i"

///|
pub fn gl_uniform4i(
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit {
  epoxy_glUniform4i(d_glUniform4i.get(), location, v0, v1, v2, v3)
}

///|
let d_glUniform4i64ARB : Dispatch = Dispatch::new("glUniform4i64ARB")

///|
extern "c" fn epoxy_glUniform4i64ARB(
  fp : CPtr,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit = "epoxy_glUniform4i64ARB"

///|
pub fn gl_uniform4i64_arb(
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit {
  epoxy_glUniform4i64ARB(d_glUniform4i64ARB.get(), location, x, y, z, w)
}

///|
let d_glUniform4i64NV : Dispatch = Dispatch::new("glUniform4i64NV")

///|
extern "c" fn epoxy_glUniform4i64NV(
  fp : CPtr,
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit = "epoxy_glUniform4i64NV"

///|
pub fn gl_uniform4i64_nv(
  location : Int,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit {
  epoxy_glUniform4i64NV(d_glUniform4i64NV.get(), location, x, y, z, w)
}

///|
let d_glUniform4i64vARB : Dispatch = Dispatch::new("glUniform4i64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform4i64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform4i64vARB"

///|
pub fn gl_uniform4i64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform4i64vARB(d_glUniform4i64vARB.get(), location, count, value)
}

///|
let d_glUniform4i64vNV : Dispatch = Dispatch::new("glUniform4i64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform4i64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit = "epoxy_glUniform4i64vNV"

///|
pub fn gl_uniform4i64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[Int64],
) -> Unit {
  epoxy_glUniform4i64vNV(d_glUniform4i64vNV.get(), location, count, value)
}

///|
let d_glUniform4iARB : Dispatch = Dispatch::with_aliases("glUniform4iARB", [
  "glUniform4i",
])

///|
extern "c" fn epoxy_glUniform4iARB(
  fp : CPtr,
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit = "epoxy_glUniform4iARB"

///|
pub fn gl_uniform4i_arb(
  location : Int,
  v0 : Int,
  v1 : Int,
  v2 : Int,
  v3 : Int,
) -> Unit {
  epoxy_glUniform4iARB(d_glUniform4iARB.get(), location, v0, v1, v2, v3)
}

///|
let d_glUniform4iv : Dispatch = Dispatch::with_aliases("glUniform4iv", [
  "glUniform4ivARB",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform4iv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform4iv"

///|
pub fn gl_uniform4iv(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform4iv(d_glUniform4iv.get(), location, count, value)
}

///|
let d_glUniform4ivARB : Dispatch = Dispatch::with_aliases("glUniform4ivARB", [
  "glUniform4iv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform4ivARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit = "epoxy_glUniform4ivARB"

///|
pub fn gl_uniform4iv_arb(
  location : Int,
  count : Int,
  value : FixedArray[Int],
) -> Unit {
  epoxy_glUniform4ivARB(d_glUniform4ivARB.get(), location, count, value)
}

///|
let d_glUniform4ui : Dispatch = Dispatch::with_aliases("glUniform4ui", [
  "glUniform4uiEXT",
])

///|
extern "c" fn epoxy_glUniform4ui(
  fp : CPtr,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit = "epoxy_glUniform4ui"

///|
pub fn gl_uniform4ui(
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit {
  epoxy_glUniform4ui(d_glUniform4ui.get(), location, v0, v1, v2, v3)
}

///|
let d_glUniform4ui64ARB : Dispatch = Dispatch::new("glUniform4ui64ARB")

///|
extern "c" fn epoxy_glUniform4ui64ARB(
  fp : CPtr,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit = "epoxy_glUniform4ui64ARB"

///|
pub fn gl_uniform4ui64_arb(
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit {
  epoxy_glUniform4ui64ARB(d_glUniform4ui64ARB.get(), location, x, y, z, w)
}

///|
let d_glUniform4ui64NV : Dispatch = Dispatch::new("glUniform4ui64NV")

///|
extern "c" fn epoxy_glUniform4ui64NV(
  fp : CPtr,
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit = "epoxy_glUniform4ui64NV"

///|
pub fn gl_uniform4ui64_nv(
  location : Int,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit {
  epoxy_glUniform4ui64NV(d_glUniform4ui64NV.get(), location, x, y, z, w)
}

///|
let d_glUniform4ui64vARB : Dispatch = Dispatch::new("glUniform4ui64vARB")

///|
#borrow(value)
extern "c" fn epoxy_glUniform4ui64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform4ui64vARB"

///|
pub fn gl_uniform4ui64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform4ui64vARB(d_glUniform4ui64vARB.get(), location, count, value)
}

///|
let d_glUniform4ui64vNV : Dispatch = Dispatch::new("glUniform4ui64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniform4ui64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniform4ui64vNV"

///|
pub fn gl_uniform4ui64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniform4ui64vNV(d_glUniform4ui64vNV.get(), location, count, value)
}

///|
let d_glUniform4uiEXT : Dispatch = Dispatch::with_aliases("glUniform4uiEXT", [
  "glUniform4ui",
])

///|
extern "c" fn epoxy_glUniform4uiEXT(
  fp : CPtr,
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit = "epoxy_glUniform4uiEXT"

///|
pub fn gl_uniform4ui_ext(
  location : Int,
  v0 : UInt,
  v1 : UInt,
  v2 : UInt,
  v3 : UInt,
) -> Unit {
  epoxy_glUniform4uiEXT(d_glUniform4uiEXT.get(), location, v0, v1, v2, v3)
}

///|
let d_glUniform4uiv : Dispatch = Dispatch::with_aliases("glUniform4uiv", [
  "glUniform4uivEXT",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform4uiv(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform4uiv"

///|
pub fn gl_uniform4uiv(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform4uiv(d_glUniform4uiv.get(), location, count, value)
}

///|
let d_glUniform4uivEXT : Dispatch = Dispatch::with_aliases("glUniform4uivEXT", [
  "glUniform4uiv",
])

///|
#borrow(value)
extern "c" fn epoxy_glUniform4uivEXT(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glUniform4uivEXT"

///|
pub fn gl_uniform4uiv_ext(
  location : Int,
  count : Int,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glUniform4uivEXT(d_glUniform4uivEXT.get(), location, count, value)
}

///|
let d_glUniformBlockBinding : Dispatch = Dispatch::new("glUniformBlockBinding")

///|
extern "c" fn epoxy_glUniformBlockBinding(
  fp : CPtr,
  program : UInt,
  uniformBlockIndex : UInt,
  uniformBlockBinding : UInt,
) -> Unit = "epoxy_glUniformBlockBinding"

///|
pub fn gl_uniform_block_binding(
  program : UInt,
  uniformBlockIndex : UInt,
  uniformBlockBinding : UInt,
) -> Unit {
  epoxy_glUniformBlockBinding(
    d_glUniformBlockBinding.get(),
    program,
    uniformBlockIndex,
    uniformBlockBinding,
  )
}

///|
let d_glUniformBufferEXT : Dispatch = Dispatch::new("glUniformBufferEXT")

///|
extern "c" fn epoxy_glUniformBufferEXT(
  fp : CPtr,
  program : UInt,
  location : Int,
  buffer : UInt,
) -> Unit = "epoxy_glUniformBufferEXT"

///|
pub fn gl_uniform_buffer_ext(
  program : UInt,
  location : Int,
  buffer : UInt,
) -> Unit {
  epoxy_glUniformBufferEXT(
    d_glUniformBufferEXT.get(),
    program,
    location,
    buffer,
  )
}

///|
let d_glUniformHandleui64ARB : Dispatch = Dispatch::with_aliases(
  "glUniformHandleui64ARB",
  ["glUniformHandleui64IMG"],
)

///|
extern "c" fn epoxy_glUniformHandleui64ARB(
  fp : CPtr,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glUniformHandleui64ARB"

///|
pub fn gl_uniform_handleui64_arb(location : Int, value : UInt64) -> Unit {
  epoxy_glUniformHandleui64ARB(d_glUniformHandleui64ARB.get(), location, value)
}

///|
let d_glUniformHandleui64IMG : Dispatch = Dispatch::with_aliases(
  "glUniformHandleui64IMG",
  ["glUniformHandleui64ARB"],
)

///|
extern "c" fn epoxy_glUniformHandleui64IMG(
  fp : CPtr,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glUniformHandleui64IMG"

///|
pub fn gl_uniform_handleui64_img(location : Int, value : UInt64) -> Unit {
  epoxy_glUniformHandleui64IMG(d_glUniformHandleui64IMG.get(), location, value)
}

///|
let d_glUniformHandleui64NV : Dispatch = Dispatch::new("glUniformHandleui64NV")

///|
extern "c" fn epoxy_glUniformHandleui64NV(
  fp : CPtr,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glUniformHandleui64NV"

///|
pub fn gl_uniform_handleui64_nv(location : Int, value : UInt64) -> Unit {
  epoxy_glUniformHandleui64NV(d_glUniformHandleui64NV.get(), location, value)
}

///|
let d_glUniformHandleui64vARB : Dispatch = Dispatch::with_aliases(
  "glUniformHandleui64vARB",
  ["glUniformHandleui64vIMG"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformHandleui64vARB(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniformHandleui64vARB"

///|
pub fn gl_uniform_handleui64v_arb(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniformHandleui64vARB(
    d_glUniformHandleui64vARB.get(),
    location,
    count,
    value,
  )
}

///|
let d_glUniformHandleui64vIMG : Dispatch = Dispatch::with_aliases(
  "glUniformHandleui64vIMG",
  ["glUniformHandleui64vARB"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformHandleui64vIMG(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniformHandleui64vIMG"

///|
pub fn gl_uniform_handleui64v_img(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniformHandleui64vIMG(
    d_glUniformHandleui64vIMG.get(),
    location,
    count,
    value,
  )
}

///|
let d_glUniformHandleui64vNV : Dispatch = Dispatch::new(
  "glUniformHandleui64vNV",
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformHandleui64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniformHandleui64vNV"

///|
pub fn gl_uniform_handleui64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniformHandleui64vNV(
    d_glUniformHandleui64vNV.get(),
    location,
    count,
    value,
  )
}

///|
let d_glUniformMatrix2dv : Dispatch = Dispatch::new("glUniformMatrix2dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix2dv"

///|
pub fn gl_uniform_matrix2dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix2dv(
    d_glUniformMatrix2dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix2fv",
  ["glUniformMatrix2fvARB"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix2fv"

///|
pub fn gl_uniform_matrix2fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix2fv(
    d_glUniformMatrix2fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2fvARB : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix2fvARB",
  ["glUniformMatrix2fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2fvARB(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix2fvARB"

///|
pub fn gl_uniform_matrix2fv_arb(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix2fvARB(
    d_glUniformMatrix2fvARB.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2x3dv : Dispatch = Dispatch::new("glUniformMatrix2x3dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2x3dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix2x3dv"

///|
pub fn gl_uniform_matrix2x3dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix2x3dv(
    d_glUniformMatrix2x3dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2x3fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix2x3fv",
  ["glUniformMatrix2x3fvNV"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2x3fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix2x3fv"

///|
pub fn gl_uniform_matrix2x3fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix2x3fv(
    d_glUniformMatrix2x3fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2x3fvNV : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix2x3fvNV",
  ["glUniformMatrix2x3fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2x3fvNV(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix2x3fvNV"

///|
pub fn gl_uniform_matrix2x3fv_nv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix2x3fvNV(
    d_glUniformMatrix2x3fvNV.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2x4dv : Dispatch = Dispatch::new("glUniformMatrix2x4dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2x4dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix2x4dv"

///|
pub fn gl_uniform_matrix2x4dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix2x4dv(
    d_glUniformMatrix2x4dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2x4fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix2x4fv",
  ["glUniformMatrix2x4fvNV"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2x4fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix2x4fv"

///|
pub fn gl_uniform_matrix2x4fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix2x4fv(
    d_glUniformMatrix2x4fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix2x4fvNV : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix2x4fvNV",
  ["glUniformMatrix2x4fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix2x4fvNV(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix2x4fvNV"

///|
pub fn gl_uniform_matrix2x4fv_nv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix2x4fvNV(
    d_glUniformMatrix2x4fvNV.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3dv : Dispatch = Dispatch::new("glUniformMatrix3dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix3dv"

///|
pub fn gl_uniform_matrix3dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix3dv(
    d_glUniformMatrix3dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix3fv",
  ["glUniformMatrix3fvARB"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix3fv"

///|
pub fn gl_uniform_matrix3fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix3fv(
    d_glUniformMatrix3fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3fvARB : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix3fvARB",
  ["glUniformMatrix3fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3fvARB(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix3fvARB"

///|
pub fn gl_uniform_matrix3fv_arb(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix3fvARB(
    d_glUniformMatrix3fvARB.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3x2dv : Dispatch = Dispatch::new("glUniformMatrix3x2dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3x2dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix3x2dv"

///|
pub fn gl_uniform_matrix3x2dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix3x2dv(
    d_glUniformMatrix3x2dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3x2fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix3x2fv",
  ["glUniformMatrix3x2fvNV"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3x2fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix3x2fv"

///|
pub fn gl_uniform_matrix3x2fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix3x2fv(
    d_glUniformMatrix3x2fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3x2fvNV : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix3x2fvNV",
  ["glUniformMatrix3x2fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3x2fvNV(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix3x2fvNV"

///|
pub fn gl_uniform_matrix3x2fv_nv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix3x2fvNV(
    d_glUniformMatrix3x2fvNV.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3x4dv : Dispatch = Dispatch::new("glUniformMatrix3x4dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3x4dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix3x4dv"

///|
pub fn gl_uniform_matrix3x4dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix3x4dv(
    d_glUniformMatrix3x4dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3x4fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix3x4fv",
  ["glUniformMatrix3x4fvNV"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3x4fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix3x4fv"

///|
pub fn gl_uniform_matrix3x4fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix3x4fv(
    d_glUniformMatrix3x4fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix3x4fvNV : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix3x4fvNV",
  ["glUniformMatrix3x4fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix3x4fvNV(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix3x4fvNV"

///|
pub fn gl_uniform_matrix3x4fv_nv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix3x4fvNV(
    d_glUniformMatrix3x4fvNV.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4dv : Dispatch = Dispatch::new("glUniformMatrix4dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix4dv"

///|
pub fn gl_uniform_matrix4dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix4dv(
    d_glUniformMatrix4dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix4fv",
  ["glUniformMatrix4fvARB"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix4fv"

///|
pub fn gl_uniform_matrix4fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix4fv(
    d_glUniformMatrix4fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4fvARB : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix4fvARB",
  ["glUniformMatrix4fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4fvARB(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix4fvARB"

///|
pub fn gl_uniform_matrix4fv_arb(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix4fvARB(
    d_glUniformMatrix4fvARB.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4x2dv : Dispatch = Dispatch::new("glUniformMatrix4x2dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4x2dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix4x2dv"

///|
pub fn gl_uniform_matrix4x2dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix4x2dv(
    d_glUniformMatrix4x2dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4x2fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix4x2fv",
  ["glUniformMatrix4x2fvNV"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4x2fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix4x2fv"

///|
pub fn gl_uniform_matrix4x2fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix4x2fv(
    d_glUniformMatrix4x2fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4x2fvNV : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix4x2fvNV",
  ["glUniformMatrix4x2fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4x2fvNV(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix4x2fvNV"

///|
pub fn gl_uniform_matrix4x2fv_nv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix4x2fvNV(
    d_glUniformMatrix4x2fvNV.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4x3dv : Dispatch = Dispatch::new("glUniformMatrix4x3dv")

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4x3dv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit = "epoxy_glUniformMatrix4x3dv"

///|
pub fn gl_uniform_matrix4x3dv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Double],
) -> Unit {
  epoxy_glUniformMatrix4x3dv(
    d_glUniformMatrix4x3dv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4x3fv : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix4x3fv",
  ["glUniformMatrix4x3fvNV"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4x3fv(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix4x3fv"

///|
pub fn gl_uniform_matrix4x3fv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix4x3fv(
    d_glUniformMatrix4x3fv.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformMatrix4x3fvNV : Dispatch = Dispatch::with_aliases(
  "glUniformMatrix4x3fvNV",
  ["glUniformMatrix4x3fv"],
)

///|
#borrow(value)
extern "c" fn epoxy_glUniformMatrix4x3fvNV(
  fp : CPtr,
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit = "epoxy_glUniformMatrix4x3fvNV"

///|
pub fn gl_uniform_matrix4x3fv_nv(
  location : Int,
  count : Int,
  transpose : Bool,
  value : FixedArray[Float],
) -> Unit {
  epoxy_glUniformMatrix4x3fvNV(
    d_glUniformMatrix4x3fvNV.get(),
    location,
    count,
    transpose,
    value,
  )
}

///|
let d_glUniformSubroutinesuiv : Dispatch = Dispatch::new(
  "glUniformSubroutinesuiv",
)

///|
#borrow(indices)
extern "c" fn epoxy_glUniformSubroutinesuiv(
  fp : CPtr,
  shadertype : UInt,
  count : Int,
  indices : FixedArray[UInt],
) -> Unit = "epoxy_glUniformSubroutinesuiv"

///|
pub fn gl_uniform_subroutinesuiv(
  shadertype : UInt,
  count : Int,
  indices : FixedArray[UInt],
) -> Unit {
  epoxy_glUniformSubroutinesuiv(
    d_glUniformSubroutinesuiv.get(),
    shadertype,
    count,
    indices,
  )
}

///|
let d_glUniformui64NV : Dispatch = Dispatch::new("glUniformui64NV")

///|
extern "c" fn epoxy_glUniformui64NV(
  fp : CPtr,
  location : Int,
  value : UInt64,
) -> Unit = "epoxy_glUniformui64NV"

///|
pub fn gl_uniformui64_nv(location : Int, value : UInt64) -> Unit {
  epoxy_glUniformui64NV(d_glUniformui64NV.get(), location, value)
}

///|
let d_glUniformui64vNV : Dispatch = Dispatch::new("glUniformui64vNV")

///|
#borrow(value)
extern "c" fn epoxy_glUniformui64vNV(
  fp : CPtr,
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit = "epoxy_glUniformui64vNV"

///|
pub fn gl_uniformui64v_nv(
  location : Int,
  count : Int,
  value : FixedArray[UInt64],
) -> Unit {
  epoxy_glUniformui64vNV(d_glUniformui64vNV.get(), location, count, value)
}

///|
let d_glUnlockArraysEXT : Dispatch = Dispatch::new("glUnlockArraysEXT")

///|
extern "c" fn epoxy_glUnlockArraysEXT(fp : CPtr) -> Unit = "epoxy_glUnlockArraysEXT"

///|
pub fn gl_unlock_arrays_ext() -> Unit {
  epoxy_glUnlockArraysEXT(d_glUnlockArraysEXT.get())
}

///|
let d_glUnmapBuffer : Dispatch = Dispatch::with_aliases("glUnmapBuffer", [
  "glUnmapBufferARB", "glUnmapBufferOES",
])

///|
extern "c" fn epoxy_glUnmapBuffer(fp : CPtr, target : UInt) -> Bool = "epoxy_glUnmapBuffer"

///|
pub fn gl_unmap_buffer(target : UInt) -> Bool {
  epoxy_glUnmapBuffer(d_glUnmapBuffer.get(), target)
}

///|
let d_glUnmapBufferARB : Dispatch = Dispatch::with_aliases("glUnmapBufferARB", [
  "glUnmapBuffer", "glUnmapBufferOES",
])

///|
extern "c" fn epoxy_glUnmapBufferARB(fp : CPtr, target : UInt) -> Bool = "epoxy_glUnmapBufferARB"

///|
pub fn gl_unmap_buffer_arb(target : UInt) -> Bool {
  epoxy_glUnmapBufferARB(d_glUnmapBufferARB.get(), target)
}

///|
let d_glUnmapBufferOES : Dispatch = Dispatch::with_aliases("glUnmapBufferOES", [
  "glUnmapBuffer", "glUnmapBufferARB",
])

///|
extern "c" fn epoxy_glUnmapBufferOES(fp : CPtr, target : UInt) -> Bool = "epoxy_glUnmapBufferOES"

///|
pub fn gl_unmap_buffer_oes(target : UInt) -> Bool {
  epoxy_glUnmapBufferOES(d_glUnmapBufferOES.get(), target)
}

///|
let d_glUnmapNamedBuffer : Dispatch = Dispatch::new("glUnmapNamedBuffer")

///|
extern "c" fn epoxy_glUnmapNamedBuffer(fp : CPtr, buffer : UInt) -> Bool = "epoxy_glUnmapNamedBuffer"

///|
pub fn gl_unmap_named_buffer(buffer : UInt) -> Bool {
  epoxy_glUnmapNamedBuffer(d_glUnmapNamedBuffer.get(), buffer)
}

///|
let d_glUnmapNamedBufferEXT : Dispatch = Dispatch::new("glUnmapNamedBufferEXT")

///|
extern "c" fn epoxy_glUnmapNamedBufferEXT(fp : CPtr, buffer : UInt) -> Bool = "epoxy_glUnmapNamedBufferEXT"

///|
pub fn gl_unmap_named_buffer_ext(buffer : UInt) -> Bool {
  epoxy_glUnmapNamedBufferEXT(d_glUnmapNamedBufferEXT.get(), buffer)
}

///|
let d_glUnmapObjectBufferATI : Dispatch = Dispatch::new(
  "glUnmapObjectBufferATI",
)

///|
extern "c" fn epoxy_glUnmapObjectBufferATI(fp : CPtr, buffer : UInt) -> Unit = "epoxy_glUnmapObjectBufferATI"

///|
pub fn gl_unmap_object_buffer_ati(buffer : UInt) -> Unit {
  epoxy_glUnmapObjectBufferATI(d_glUnmapObjectBufferATI.get(), buffer)
}

///|
let d_glUnmapTexture2DINTEL : Dispatch = Dispatch::new("glUnmapTexture2DINTEL")

///|
extern "c" fn epoxy_glUnmapTexture2DINTEL(
  fp : CPtr,
  texture : UInt,
  level : Int,
) -> Unit = "epoxy_glUnmapTexture2DINTEL"

///|
pub fn gl_unmap_texture2_dintel(texture : UInt, level : Int) -> Unit {
  epoxy_glUnmapTexture2DINTEL(d_glUnmapTexture2DINTEL.get(), texture, level)
}

///|
let d_glUpdateObjectBufferATI : Dispatch = Dispatch::new(
  "glUpdateObjectBufferATI",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glUpdateObjectBufferATI(
  fp : CPtr,
  buffer : UInt,
  offset : UInt,
  size : Int,
  pointer : Bytes,
  preserve : UInt,
) -> Unit = "epoxy_glUpdateObjectBufferATI"

///|
pub fn gl_update_object_buffer_ati(
  buffer : UInt,
  offset : UInt,
  size : Int,
  pointer : Bytes,
  preserve : UInt,
) -> Unit {
  epoxy_glUpdateObjectBufferATI(
    d_glUpdateObjectBufferATI.get(),
    buffer,
    offset,
    size,
    pointer,
    preserve,
  )
}

///|
let d_glUploadGpuMaskNVX : Dispatch = Dispatch::new("glUploadGpuMaskNVX")

///|
extern "c" fn epoxy_glUploadGpuMaskNVX(fp : CPtr, mask : UInt) -> Unit = "epoxy_glUploadGpuMaskNVX"

///|
pub fn gl_upload_gpu_mask_nvx(mask : UInt) -> Unit {
  epoxy_glUploadGpuMaskNVX(d_glUploadGpuMaskNVX.get(), mask)
}

///|
let d_glUseProgram : Dispatch = Dispatch::with_aliases("glUseProgram", [
  "glUseProgramObjectARB",
])

///|
extern "c" fn epoxy_glUseProgram(fp : CPtr, program : UInt) -> Unit = "epoxy_glUseProgram"

///|
pub fn gl_use_program(program : UInt) -> Unit {
  epoxy_glUseProgram(d_glUseProgram.get(), program)
}

///|
let d_glUseProgramStages : Dispatch = Dispatch::new("glUseProgramStages")

///|
extern "c" fn epoxy_glUseProgramStages(
  fp : CPtr,
  pipeline : UInt,
  stages : UInt,
  program : UInt,
) -> Unit = "epoxy_glUseProgramStages"

///|
pub fn gl_use_program_stages(
  pipeline : UInt,
  stages : UInt,
  program : UInt,
) -> Unit {
  epoxy_glUseProgramStages(
    d_glUseProgramStages.get(),
    pipeline,
    stages,
    program,
  )
}

///|
let d_glUseProgramStagesEXT : Dispatch = Dispatch::new("glUseProgramStagesEXT")

///|
extern "c" fn epoxy_glUseProgramStagesEXT(
  fp : CPtr,
  pipeline : UInt,
  stages : UInt,
  program : UInt,
) -> Unit = "epoxy_glUseProgramStagesEXT"

///|
pub fn gl_use_program_stages_ext(
  pipeline : UInt,
  stages : UInt,
  program : UInt,
) -> Unit {
  epoxy_glUseProgramStagesEXT(
    d_glUseProgramStagesEXT.get(),
    pipeline,
    stages,
    program,
  )
}

///|
let d_glUseShaderProgramEXT : Dispatch = Dispatch::new("glUseShaderProgramEXT")

///|
extern "c" fn epoxy_glUseShaderProgramEXT(
  fp : CPtr,
  type_ : UInt,
  program : UInt,
) -> Unit = "epoxy_glUseShaderProgramEXT"

///|
pub fn gl_use_shader_program_ext(type_ : UInt, program : UInt) -> Unit {
  epoxy_glUseShaderProgramEXT(d_glUseShaderProgramEXT.get(), type_, program)
}

///|
let d_glVDPAUFiniNV : Dispatch = Dispatch::new("glVDPAUFiniNV")

///|
extern "c" fn epoxy_glVDPAUFiniNV(fp : CPtr) -> Unit = "epoxy_glVDPAUFiniNV"

///|
pub fn gl_vdpau_fini_nv() -> Unit {
  epoxy_glVDPAUFiniNV(d_glVDPAUFiniNV.get())
}

///|
let d_glVDPAUGetSurfaceivNV : Dispatch = Dispatch::new("glVDPAUGetSurfaceivNV")

///|
#borrow(length, values)
extern "c" fn epoxy_glVDPAUGetSurfaceivNV(
  fp : CPtr,
  surface : Int64,
  pname : UInt,
  count : Int,
  length : FixedArray[Int],
  values : FixedArray[Int],
) -> Unit = "epoxy_glVDPAUGetSurfaceivNV"

///|
pub fn gl_vdpau_get_surfaceiv_nv(
  surface : Int64,
  pname : UInt,
  count : Int,
  length : FixedArray[Int],
  values : FixedArray[Int],
) -> Unit {
  epoxy_glVDPAUGetSurfaceivNV(
    d_glVDPAUGetSurfaceivNV.get(),
    surface,
    pname,
    count,
    length,
    values,
  )
}

///|
let d_glVDPAUInitNV : Dispatch = Dispatch::new("glVDPAUInitNV")

///|
#borrow(vdpDevice, getProcAddress)
extern "c" fn epoxy_glVDPAUInitNV(
  fp : CPtr,
  vdpDevice : Bytes,
  getProcAddress : Bytes,
) -> Unit = "epoxy_glVDPAUInitNV"

///|
pub fn gl_vdpau_init_nv(vdpDevice : Bytes, getProcAddress : Bytes) -> Unit {
  epoxy_glVDPAUInitNV(d_glVDPAUInitNV.get(), vdpDevice, getProcAddress)
}

///|
let d_glVDPAUIsSurfaceNV : Dispatch = Dispatch::new("glVDPAUIsSurfaceNV")

///|
extern "c" fn epoxy_glVDPAUIsSurfaceNV(fp : CPtr, surface : Int64) -> Bool = "epoxy_glVDPAUIsSurfaceNV"

///|
pub fn gl_vdpau_is_surface_nv(surface : Int64) -> Bool {
  epoxy_glVDPAUIsSurfaceNV(d_glVDPAUIsSurfaceNV.get(), surface)
}

///|
let d_glVDPAURegisterOutputSurfaceNV : Dispatch = Dispatch::new(
  "glVDPAURegisterOutputSurfaceNV",
)

///|
#borrow(vdpSurface, textureNames)
extern "c" fn epoxy_glVDPAURegisterOutputSurfaceNV(
  fp : CPtr,
  vdpSurface : Bytes,
  target : UInt,
  numTextureNames : Int,
  textureNames : FixedArray[UInt],
) -> Int64 = "epoxy_glVDPAURegisterOutputSurfaceNV"

///|
pub fn gl_vdpau_register_output_surface_nv(
  vdpSurface : Bytes,
  target : UInt,
  numTextureNames : Int,
  textureNames : FixedArray[UInt],
) -> Int64 {
  epoxy_glVDPAURegisterOutputSurfaceNV(
    d_glVDPAURegisterOutputSurfaceNV.get(),
    vdpSurface,
    target,
    numTextureNames,
    textureNames,
  )
}

///|
let d_glVDPAURegisterVideoSurfaceNV : Dispatch = Dispatch::new(
  "glVDPAURegisterVideoSurfaceNV",
)

///|
#borrow(vdpSurface, textureNames)
extern "c" fn epoxy_glVDPAURegisterVideoSurfaceNV(
  fp : CPtr,
  vdpSurface : Bytes,
  target : UInt,
  numTextureNames : Int,
  textureNames : FixedArray[UInt],
) -> Int64 = "epoxy_glVDPAURegisterVideoSurfaceNV"

///|
pub fn gl_vdpau_register_video_surface_nv(
  vdpSurface : Bytes,
  target : UInt,
  numTextureNames : Int,
  textureNames : FixedArray[UInt],
) -> Int64 {
  epoxy_glVDPAURegisterVideoSurfaceNV(
    d_glVDPAURegisterVideoSurfaceNV.get(),
    vdpSurface,
    target,
    numTextureNames,
    textureNames,
  )
}

///|
let d_glVDPAURegisterVideoSurfaceWithPictureStructureNV : Dispatch = Dispatch::new(
  "glVDPAURegisterVideoSurfaceWithPictureStructureNV",
)

///|
#borrow(vdpSurface, textureNames)
extern "c" fn epoxy_glVDPAURegisterVideoSurfaceWithPictureStructureNV(
  fp : CPtr,
  vdpSurface : Bytes,
  target : UInt,
  numTextureNames : Int,
  textureNames : FixedArray[UInt],
  isFrameStructure : Bool,
) -> Int64 = "epoxy_glVDPAURegisterVideoSurfaceWithPictureStructureNV"

///|
pub fn gl_vdpau_register_video_surface_with_picture_structure_nv(
  vdpSurface : Bytes,
  target : UInt,
  numTextureNames : Int,
  textureNames : FixedArray[UInt],
  isFrameStructure : Bool,
) -> Int64 {
  epoxy_glVDPAURegisterVideoSurfaceWithPictureStructureNV(
    d_glVDPAURegisterVideoSurfaceWithPictureStructureNV.get(),
    vdpSurface,
    target,
    numTextureNames,
    textureNames,
    isFrameStructure,
  )
}

///|
let d_glVDPAUSurfaceAccessNV : Dispatch = Dispatch::new(
  "glVDPAUSurfaceAccessNV",
)

///|
extern "c" fn epoxy_glVDPAUSurfaceAccessNV(
  fp : CPtr,
  surface : Int64,
  access : UInt,
) -> Unit = "epoxy_glVDPAUSurfaceAccessNV"

///|
pub fn gl_vdpau_surface_access_nv(surface : Int64, access : UInt) -> Unit {
  epoxy_glVDPAUSurfaceAccessNV(d_glVDPAUSurfaceAccessNV.get(), surface, access)
}

///|
let d_glVDPAUUnregisterSurfaceNV : Dispatch = Dispatch::new(
  "glVDPAUUnregisterSurfaceNV",
)

///|
extern "c" fn epoxy_glVDPAUUnregisterSurfaceNV(
  fp : CPtr,
  surface : Int64,
) -> Unit = "epoxy_glVDPAUUnregisterSurfaceNV"

///|
pub fn gl_vdpau_unregister_surface_nv(surface : Int64) -> Unit {
  epoxy_glVDPAUUnregisterSurfaceNV(d_glVDPAUUnregisterSurfaceNV.get(), surface)
}

///|
let d_glValidateProgram : Dispatch = Dispatch::with_aliases(
  "glValidateProgram",
  ["glValidateProgramARB"],
)

///|
extern "c" fn epoxy_glValidateProgram(fp : CPtr, program : UInt) -> Unit = "epoxy_glValidateProgram"

///|
pub fn gl_validate_program(program : UInt) -> Unit {
  epoxy_glValidateProgram(d_glValidateProgram.get(), program)
}

///|
let d_glValidateProgramPipeline : Dispatch = Dispatch::new(
  "glValidateProgramPipeline",
)

///|
extern "c" fn epoxy_glValidateProgramPipeline(
  fp : CPtr,
  pipeline : UInt,
) -> Unit = "epoxy_glValidateProgramPipeline"

///|
pub fn gl_validate_program_pipeline(pipeline : UInt) -> Unit {
  epoxy_glValidateProgramPipeline(d_glValidateProgramPipeline.get(), pipeline)
}

///|
let d_glValidateProgramPipelineEXT : Dispatch = Dispatch::new(
  "glValidateProgramPipelineEXT",
)

///|
extern "c" fn epoxy_glValidateProgramPipelineEXT(
  fp : CPtr,
  pipeline : UInt,
) -> Unit = "epoxy_glValidateProgramPipelineEXT"

///|
pub fn gl_validate_program_pipeline_ext(pipeline : UInt) -> Unit {
  epoxy_glValidateProgramPipelineEXT(
    d_glValidateProgramPipelineEXT.get(),
    pipeline,
  )
}

///|
let d_glVariantArrayObjectATI : Dispatch = Dispatch::new(
  "glVariantArrayObjectATI",
)

///|
extern "c" fn epoxy_glVariantArrayObjectATI(
  fp : CPtr,
  id : UInt,
  type_ : UInt,
  stride : Int,
  buffer : UInt,
  offset : UInt,
) -> Unit = "epoxy_glVariantArrayObjectATI"

///|
pub fn gl_variant_array_object_ati(
  id : UInt,
  type_ : UInt,
  stride : Int,
  buffer : UInt,
  offset : UInt,
) -> Unit {
  epoxy_glVariantArrayObjectATI(
    d_glVariantArrayObjectATI.get(),
    id,
    type_,
    stride,
    buffer,
    offset,
  )
}

///|
let d_glVariantPointerEXT : Dispatch = Dispatch::new("glVariantPointerEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantPointerEXT(
  fp : CPtr,
  id : UInt,
  type_ : UInt,
  stride : UInt,
  addr : Bytes,
) -> Unit = "epoxy_glVariantPointerEXT"

///|
pub fn gl_variant_pointer_ext(
  id : UInt,
  type_ : UInt,
  stride : UInt,
  addr : Bytes,
) -> Unit {
  epoxy_glVariantPointerEXT(
    d_glVariantPointerEXT.get(),
    id,
    type_,
    stride,
    addr,
  )
}

///|
let d_glVariantbvEXT : Dispatch = Dispatch::new("glVariantbvEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantbvEXT(fp : CPtr, id : UInt, addr : Bytes) -> Unit = "epoxy_glVariantbvEXT"

///|
pub fn gl_variantbv_ext(id : UInt, addr : Bytes) -> Unit {
  epoxy_glVariantbvEXT(d_glVariantbvEXT.get(), id, addr)
}

///|
let d_glVariantdvEXT : Dispatch = Dispatch::new("glVariantdvEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantdvEXT(
  fp : CPtr,
  id : UInt,
  addr : FixedArray[Double],
) -> Unit = "epoxy_glVariantdvEXT"

///|
pub fn gl_variantdv_ext(id : UInt, addr : FixedArray[Double]) -> Unit {
  epoxy_glVariantdvEXT(d_glVariantdvEXT.get(), id, addr)
}

///|
let d_glVariantfvEXT : Dispatch = Dispatch::new("glVariantfvEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantfvEXT(
  fp : CPtr,
  id : UInt,
  addr : FixedArray[Float],
) -> Unit = "epoxy_glVariantfvEXT"

///|
pub fn gl_variantfv_ext(id : UInt, addr : FixedArray[Float]) -> Unit {
  epoxy_glVariantfvEXT(d_glVariantfvEXT.get(), id, addr)
}

///|
let d_glVariantivEXT : Dispatch = Dispatch::new("glVariantivEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantivEXT(
  fp : CPtr,
  id : UInt,
  addr : FixedArray[Int],
) -> Unit = "epoxy_glVariantivEXT"

///|
pub fn gl_variantiv_ext(id : UInt, addr : FixedArray[Int]) -> Unit {
  epoxy_glVariantivEXT(d_glVariantivEXT.get(), id, addr)
}

///|
let d_glVariantsvEXT : Dispatch = Dispatch::new("glVariantsvEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantsvEXT(
  fp : CPtr,
  id : UInt,
  addr : FixedArray[Int16],
) -> Unit = "epoxy_glVariantsvEXT"

///|
pub fn gl_variantsv_ext(id : UInt, addr : FixedArray[Int16]) -> Unit {
  epoxy_glVariantsvEXT(d_glVariantsvEXT.get(), id, addr)
}

///|
let d_glVariantubvEXT : Dispatch = Dispatch::new("glVariantubvEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantubvEXT(fp : CPtr, id : UInt, addr : Bytes) -> Unit = "epoxy_glVariantubvEXT"

///|
pub fn gl_variantubv_ext(id : UInt, addr : Bytes) -> Unit {
  epoxy_glVariantubvEXT(d_glVariantubvEXT.get(), id, addr)
}

///|
let d_glVariantuivEXT : Dispatch = Dispatch::new("glVariantuivEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantuivEXT(
  fp : CPtr,
  id : UInt,
  addr : FixedArray[UInt],
) -> Unit = "epoxy_glVariantuivEXT"

///|
pub fn gl_variantuiv_ext(id : UInt, addr : FixedArray[UInt]) -> Unit {
  epoxy_glVariantuivEXT(d_glVariantuivEXT.get(), id, addr)
}

///|
let d_glVariantusvEXT : Dispatch = Dispatch::new("glVariantusvEXT")

///|
#borrow(addr)
extern "c" fn epoxy_glVariantusvEXT(
  fp : CPtr,
  id : UInt,
  addr : FixedArray[UInt16],
) -> Unit = "epoxy_glVariantusvEXT"

///|
pub fn gl_variantusv_ext(id : UInt, addr : FixedArray[UInt16]) -> Unit {
  epoxy_glVariantusvEXT(d_glVariantusvEXT.get(), id, addr)
}

///|
let d_glVertex2bOES : Dispatch = Dispatch::new("glVertex2bOES")

///|
extern "c" fn epoxy_glVertex2bOES(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glVertex2bOES"

///|
pub fn gl_vertex2b_oes(x : Int, y : Int) -> Unit {
  epoxy_glVertex2bOES(d_glVertex2bOES.get(), x, y)
}

///|
let d_glVertex2bvOES : Dispatch = Dispatch::new("glVertex2bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glVertex2bvOES(fp : CPtr, coords : Bytes) -> Unit = "epoxy_glVertex2bvOES"

///|
pub fn gl_vertex2bv_oes(coords : Bytes) -> Unit {
  epoxy_glVertex2bvOES(d_glVertex2bvOES.get(), coords)
}

///|
let d_glVertex2d : Dispatch = Dispatch::new("glVertex2d")

///|
extern "c" fn epoxy_glVertex2d(fp : CPtr, x : Double, y : Double) -> Unit = "epoxy_glVertex2d"

///|
pub fn gl_vertex2d(x : Double, y : Double) -> Unit {
  epoxy_glVertex2d(d_glVertex2d.get(), x, y)
}

///|
let d_glVertex2dv : Dispatch = Dispatch::new("glVertex2dv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex2dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glVertex2dv"

///|
pub fn gl_vertex2dv(v : FixedArray[Double]) -> Unit {
  epoxy_glVertex2dv(d_glVertex2dv.get(), v)
}

///|
let d_glVertex2f : Dispatch = Dispatch::new("glVertex2f")

///|
extern "c" fn epoxy_glVertex2f(fp : CPtr, x : Float, y : Float) -> Unit = "epoxy_glVertex2f"

///|
pub fn gl_vertex2f(x : Float, y : Float) -> Unit {
  epoxy_glVertex2f(d_glVertex2f.get(), x, y)
}

///|
let d_glVertex2fv : Dispatch = Dispatch::new("glVertex2fv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex2fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glVertex2fv"

///|
pub fn gl_vertex2fv(v : FixedArray[Float]) -> Unit {
  epoxy_glVertex2fv(d_glVertex2fv.get(), v)
}

///|
let d_glVertex2hNV : Dispatch = Dispatch::new("glVertex2hNV")

///|
extern "c" fn epoxy_glVertex2hNV(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glVertex2hNV"

///|
pub fn gl_vertex2h_nv(x : Int, y : Int) -> Unit {
  epoxy_glVertex2hNV(d_glVertex2hNV.get(), x, y)
}

///|
let d_glVertex2hvNV : Dispatch = Dispatch::new("glVertex2hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertex2hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glVertex2hvNV"

///|
pub fn gl_vertex2hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertex2hvNV(d_glVertex2hvNV.get(), v)
}

///|
let d_glVertex2i : Dispatch = Dispatch::new("glVertex2i")

///|
extern "c" fn epoxy_glVertex2i(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glVertex2i"

///|
pub fn gl_vertex2i(x : Int, y : Int) -> Unit {
  epoxy_glVertex2i(d_glVertex2i.get(), x, y)
}

///|
let d_glVertex2iv : Dispatch = Dispatch::new("glVertex2iv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex2iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glVertex2iv"

///|
pub fn gl_vertex2iv(v : FixedArray[Int]) -> Unit {
  epoxy_glVertex2iv(d_glVertex2iv.get(), v)
}

///|
let d_glVertex2s : Dispatch = Dispatch::new("glVertex2s")

///|
extern "c" fn epoxy_glVertex2s(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glVertex2s"

///|
pub fn gl_vertex2s(x : Int, y : Int) -> Unit {
  epoxy_glVertex2s(d_glVertex2s.get(), x, y)
}

///|
let d_glVertex2sv : Dispatch = Dispatch::new("glVertex2sv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex2sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glVertex2sv"

///|
pub fn gl_vertex2sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glVertex2sv(d_glVertex2sv.get(), v)
}

///|
let d_glVertex2xOES : Dispatch = Dispatch::new("glVertex2xOES")

///|
extern "c" fn epoxy_glVertex2xOES(fp : CPtr, x : Int) -> Unit = "epoxy_glVertex2xOES"

///|
pub fn gl_vertex2x_oes(x : Int) -> Unit {
  epoxy_glVertex2xOES(d_glVertex2xOES.get(), x)
}

///|
let d_glVertex2xvOES : Dispatch = Dispatch::new("glVertex2xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glVertex2xvOES(fp : CPtr, coords : FixedArray[Int]) -> Unit = "epoxy_glVertex2xvOES"

///|
pub fn gl_vertex2xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glVertex2xvOES(d_glVertex2xvOES.get(), coords)
}

///|
let d_glVertex3bOES : Dispatch = Dispatch::new("glVertex3bOES")

///|
extern "c" fn epoxy_glVertex3bOES(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glVertex3bOES"

///|
pub fn gl_vertex3b_oes(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertex3bOES(d_glVertex3bOES.get(), x, y, z)
}

///|
let d_glVertex3bvOES : Dispatch = Dispatch::new("glVertex3bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glVertex3bvOES(fp : CPtr, coords : Bytes) -> Unit = "epoxy_glVertex3bvOES"

///|
pub fn gl_vertex3bv_oes(coords : Bytes) -> Unit {
  epoxy_glVertex3bvOES(d_glVertex3bvOES.get(), coords)
}

///|
let d_glVertex3d : Dispatch = Dispatch::new("glVertex3d")

///|
extern "c" fn epoxy_glVertex3d(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glVertex3d"

///|
pub fn gl_vertex3d(x : Double, y : Double, z : Double) -> Unit {
  epoxy_glVertex3d(d_glVertex3d.get(), x, y, z)
}

///|
let d_glVertex3dv : Dispatch = Dispatch::new("glVertex3dv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex3dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glVertex3dv"

///|
pub fn gl_vertex3dv(v : FixedArray[Double]) -> Unit {
  epoxy_glVertex3dv(d_glVertex3dv.get(), v)
}

///|
let d_glVertex3f : Dispatch = Dispatch::new("glVertex3f")

///|
extern "c" fn epoxy_glVertex3f(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glVertex3f"

///|
pub fn gl_vertex3f(x : Float, y : Float, z : Float) -> Unit {
  epoxy_glVertex3f(d_glVertex3f.get(), x, y, z)
}

///|
let d_glVertex3fv : Dispatch = Dispatch::new("glVertex3fv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex3fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glVertex3fv"

///|
pub fn gl_vertex3fv(v : FixedArray[Float]) -> Unit {
  epoxy_glVertex3fv(d_glVertex3fv.get(), v)
}

///|
let d_glVertex3hNV : Dispatch = Dispatch::new("glVertex3hNV")

///|
extern "c" fn epoxy_glVertex3hNV(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glVertex3hNV"

///|
pub fn gl_vertex3h_nv(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertex3hNV(d_glVertex3hNV.get(), x, y, z)
}

///|
let d_glVertex3hvNV : Dispatch = Dispatch::new("glVertex3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertex3hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glVertex3hvNV"

///|
pub fn gl_vertex3hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertex3hvNV(d_glVertex3hvNV.get(), v)
}

///|
let d_glVertex3i : Dispatch = Dispatch::new("glVertex3i")

///|
extern "c" fn epoxy_glVertex3i(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glVertex3i"

///|
pub fn gl_vertex3i(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertex3i(d_glVertex3i.get(), x, y, z)
}

///|
let d_glVertex3iv : Dispatch = Dispatch::new("glVertex3iv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex3iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glVertex3iv"

///|
pub fn gl_vertex3iv(v : FixedArray[Int]) -> Unit {
  epoxy_glVertex3iv(d_glVertex3iv.get(), v)
}

///|
let d_glVertex3s : Dispatch = Dispatch::new("glVertex3s")

///|
extern "c" fn epoxy_glVertex3s(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glVertex3s"

///|
pub fn gl_vertex3s(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertex3s(d_glVertex3s.get(), x, y, z)
}

///|
let d_glVertex3sv : Dispatch = Dispatch::new("glVertex3sv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex3sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glVertex3sv"

///|
pub fn gl_vertex3sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glVertex3sv(d_glVertex3sv.get(), v)
}

///|
let d_glVertex3xOES : Dispatch = Dispatch::new("glVertex3xOES")

///|
extern "c" fn epoxy_glVertex3xOES(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glVertex3xOES"

///|
pub fn gl_vertex3x_oes(x : Int, y : Int) -> Unit {
  epoxy_glVertex3xOES(d_glVertex3xOES.get(), x, y)
}

///|
let d_glVertex3xvOES : Dispatch = Dispatch::new("glVertex3xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glVertex3xvOES(fp : CPtr, coords : FixedArray[Int]) -> Unit = "epoxy_glVertex3xvOES"

///|
pub fn gl_vertex3xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glVertex3xvOES(d_glVertex3xvOES.get(), coords)
}

///|
let d_glVertex4bOES : Dispatch = Dispatch::new("glVertex4bOES")

///|
extern "c" fn epoxy_glVertex4bOES(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertex4bOES"

///|
pub fn gl_vertex4b_oes(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glVertex4bOES(d_glVertex4bOES.get(), x, y, z, w)
}

///|
let d_glVertex4bvOES : Dispatch = Dispatch::new("glVertex4bvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glVertex4bvOES(fp : CPtr, coords : Bytes) -> Unit = "epoxy_glVertex4bvOES"

///|
pub fn gl_vertex4bv_oes(coords : Bytes) -> Unit {
  epoxy_glVertex4bvOES(d_glVertex4bvOES.get(), coords)
}

///|
let d_glVertex4d : Dispatch = Dispatch::new("glVertex4d")

///|
extern "c" fn epoxy_glVertex4d(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glVertex4d"

///|
pub fn gl_vertex4d(x : Double, y : Double, z : Double, w : Double) -> Unit {
  epoxy_glVertex4d(d_glVertex4d.get(), x, y, z, w)
}

///|
let d_glVertex4dv : Dispatch = Dispatch::new("glVertex4dv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex4dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glVertex4dv"

///|
pub fn gl_vertex4dv(v : FixedArray[Double]) -> Unit {
  epoxy_glVertex4dv(d_glVertex4dv.get(), v)
}

///|
let d_glVertex4f : Dispatch = Dispatch::new("glVertex4f")

///|
extern "c" fn epoxy_glVertex4f(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glVertex4f"

///|
pub fn gl_vertex4f(x : Float, y : Float, z : Float, w : Float) -> Unit {
  epoxy_glVertex4f(d_glVertex4f.get(), x, y, z, w)
}

///|
let d_glVertex4fv : Dispatch = Dispatch::new("glVertex4fv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex4fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glVertex4fv"

///|
pub fn gl_vertex4fv(v : FixedArray[Float]) -> Unit {
  epoxy_glVertex4fv(d_glVertex4fv.get(), v)
}

///|
let d_glVertex4hNV : Dispatch = Dispatch::new("glVertex4hNV")

///|
extern "c" fn epoxy_glVertex4hNV(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertex4hNV"

///|
pub fn gl_vertex4h_nv(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glVertex4hNV(d_glVertex4hNV.get(), x, y, z, w)
}

///|
let d_glVertex4hvNV : Dispatch = Dispatch::new("glVertex4hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertex4hvNV(fp : CPtr, v : FixedArray[UInt16]) -> Unit = "epoxy_glVertex4hvNV"

///|
pub fn gl_vertex4hv_nv(v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertex4hvNV(d_glVertex4hvNV.get(), v)
}

///|
let d_glVertex4i : Dispatch = Dispatch::new("glVertex4i")

///|
extern "c" fn epoxy_glVertex4i(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertex4i"

///|
pub fn gl_vertex4i(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glVertex4i(d_glVertex4i.get(), x, y, z, w)
}

///|
let d_glVertex4iv : Dispatch = Dispatch::new("glVertex4iv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex4iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glVertex4iv"

///|
pub fn gl_vertex4iv(v : FixedArray[Int]) -> Unit {
  epoxy_glVertex4iv(d_glVertex4iv.get(), v)
}

///|
let d_glVertex4s : Dispatch = Dispatch::new("glVertex4s")

///|
extern "c" fn epoxy_glVertex4s(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertex4s"

///|
pub fn gl_vertex4s(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glVertex4s(d_glVertex4s.get(), x, y, z, w)
}

///|
let d_glVertex4sv : Dispatch = Dispatch::new("glVertex4sv")

///|
#borrow(v)
extern "c" fn epoxy_glVertex4sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glVertex4sv"

///|
pub fn gl_vertex4sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glVertex4sv(d_glVertex4sv.get(), v)
}

///|
let d_glVertex4xOES : Dispatch = Dispatch::new("glVertex4xOES")

///|
extern "c" fn epoxy_glVertex4xOES(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glVertex4xOES"

///|
pub fn gl_vertex4x_oes(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertex4xOES(d_glVertex4xOES.get(), x, y, z)
}

///|
let d_glVertex4xvOES : Dispatch = Dispatch::new("glVertex4xvOES")

///|
#borrow(coords)
extern "c" fn epoxy_glVertex4xvOES(fp : CPtr, coords : FixedArray[Int]) -> Unit = "epoxy_glVertex4xvOES"

///|
pub fn gl_vertex4xv_oes(coords : FixedArray[Int]) -> Unit {
  epoxy_glVertex4xvOES(d_glVertex4xvOES.get(), coords)
}

///|
let d_glVertexArrayAttribBinding : Dispatch = Dispatch::new(
  "glVertexArrayAttribBinding",
)

///|
extern "c" fn epoxy_glVertexArrayAttribBinding(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  bindingindex : UInt,
) -> Unit = "epoxy_glVertexArrayAttribBinding"

///|
pub fn gl_vertex_array_attrib_binding(
  vaobj : UInt,
  attribindex : UInt,
  bindingindex : UInt,
) -> Unit {
  epoxy_glVertexArrayAttribBinding(
    d_glVertexArrayAttribBinding.get(),
    vaobj,
    attribindex,
    bindingindex,
  )
}

///|
let d_glVertexArrayAttribFormat : Dispatch = Dispatch::new(
  "glVertexArrayAttribFormat",
)

///|
extern "c" fn epoxy_glVertexArrayAttribFormat(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexArrayAttribFormat"

///|
pub fn gl_vertex_array_attrib_format(
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexArrayAttribFormat(
    d_glVertexArrayAttribFormat.get(),
    vaobj,
    attribindex,
    size,
    type_,
    normalized,
    relativeoffset,
  )
}

///|
let d_glVertexArrayAttribIFormat : Dispatch = Dispatch::new(
  "glVertexArrayAttribIFormat",
)

///|
extern "c" fn epoxy_glVertexArrayAttribIFormat(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexArrayAttribIFormat"

///|
pub fn gl_vertex_array_attrib_i_format(
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexArrayAttribIFormat(
    d_glVertexArrayAttribIFormat.get(),
    vaobj,
    attribindex,
    size,
    type_,
    relativeoffset,
  )
}

///|
let d_glVertexArrayAttribLFormat : Dispatch = Dispatch::new(
  "glVertexArrayAttribLFormat",
)

///|
extern "c" fn epoxy_glVertexArrayAttribLFormat(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexArrayAttribLFormat"

///|
pub fn gl_vertex_array_attrib_l_format(
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexArrayAttribLFormat(
    d_glVertexArrayAttribLFormat.get(),
    vaobj,
    attribindex,
    size,
    type_,
    relativeoffset,
  )
}

///|
let d_glVertexArrayBindVertexBufferEXT : Dispatch = Dispatch::new(
  "glVertexArrayBindVertexBufferEXT",
)

///|
extern "c" fn epoxy_glVertexArrayBindVertexBufferEXT(
  fp : CPtr,
  vaobj : UInt,
  bindingindex : UInt,
  buffer : UInt,
  offset : Int64,
  stride : Int,
) -> Unit = "epoxy_glVertexArrayBindVertexBufferEXT"

///|
pub fn gl_vertex_array_bind_vertex_buffer_ext(
  vaobj : UInt,
  bindingindex : UInt,
  buffer : UInt,
  offset : Int64,
  stride : Int,
) -> Unit {
  epoxy_glVertexArrayBindVertexBufferEXT(
    d_glVertexArrayBindVertexBufferEXT.get(),
    vaobj,
    bindingindex,
    buffer,
    offset,
    stride,
  )
}

///|
let d_glVertexArrayBindingDivisor : Dispatch = Dispatch::new(
  "glVertexArrayBindingDivisor",
)

///|
extern "c" fn epoxy_glVertexArrayBindingDivisor(
  fp : CPtr,
  vaobj : UInt,
  bindingindex : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexArrayBindingDivisor"

///|
pub fn gl_vertex_array_binding_divisor(
  vaobj : UInt,
  bindingindex : UInt,
  divisor : UInt,
) -> Unit {
  epoxy_glVertexArrayBindingDivisor(
    d_glVertexArrayBindingDivisor.get(),
    vaobj,
    bindingindex,
    divisor,
  )
}

///|
let d_glVertexArrayColorOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayColorOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayColorOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayColorOffsetEXT"

///|
pub fn gl_vertex_array_color_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayColorOffsetEXT(
    d_glVertexArrayColorOffsetEXT.get(),
    vaobj,
    buffer,
    size,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayEdgeFlagOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayEdgeFlagOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayEdgeFlagOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayEdgeFlagOffsetEXT"

///|
pub fn gl_vertex_array_edge_flag_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayEdgeFlagOffsetEXT(
    d_glVertexArrayEdgeFlagOffsetEXT.get(),
    vaobj,
    buffer,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayElementBuffer : Dispatch = Dispatch::new(
  "glVertexArrayElementBuffer",
)

///|
extern "c" fn epoxy_glVertexArrayElementBuffer(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
) -> Unit = "epoxy_glVertexArrayElementBuffer"

///|
pub fn gl_vertex_array_element_buffer(vaobj : UInt, buffer : UInt) -> Unit {
  epoxy_glVertexArrayElementBuffer(
    d_glVertexArrayElementBuffer.get(),
    vaobj,
    buffer,
  )
}

///|
let d_glVertexArrayFogCoordOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayFogCoordOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayFogCoordOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayFogCoordOffsetEXT"

///|
pub fn gl_vertex_array_fog_coord_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayFogCoordOffsetEXT(
    d_glVertexArrayFogCoordOffsetEXT.get(),
    vaobj,
    buffer,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayIndexOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayIndexOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayIndexOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayIndexOffsetEXT"

///|
pub fn gl_vertex_array_index_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayIndexOffsetEXT(
    d_glVertexArrayIndexOffsetEXT.get(),
    vaobj,
    buffer,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayMultiTexCoordOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayMultiTexCoordOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayMultiTexCoordOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  texunit : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayMultiTexCoordOffsetEXT"

///|
pub fn gl_vertex_array_multi_tex_coord_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  texunit : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayMultiTexCoordOffsetEXT(
    d_glVertexArrayMultiTexCoordOffsetEXT.get(),
    vaobj,
    buffer,
    texunit,
    size,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayNormalOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayNormalOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayNormalOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayNormalOffsetEXT"

///|
pub fn gl_vertex_array_normal_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayNormalOffsetEXT(
    d_glVertexArrayNormalOffsetEXT.get(),
    vaobj,
    buffer,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayParameteriAPPLE : Dispatch = Dispatch::new(
  "glVertexArrayParameteriAPPLE",
)

///|
extern "c" fn epoxy_glVertexArrayParameteriAPPLE(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glVertexArrayParameteriAPPLE"

///|
pub fn gl_vertex_array_parameteri_apple(pname : UInt, param : Int) -> Unit {
  epoxy_glVertexArrayParameteriAPPLE(
    d_glVertexArrayParameteriAPPLE.get(),
    pname,
    param,
  )
}

///|
let d_glVertexArrayRangeAPPLE : Dispatch = Dispatch::new(
  "glVertexArrayRangeAPPLE",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexArrayRangeAPPLE(
  fp : CPtr,
  length : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexArrayRangeAPPLE"

///|
pub fn gl_vertex_array_range_apple(length : Int, pointer : Bytes) -> Unit {
  epoxy_glVertexArrayRangeAPPLE(
    d_glVertexArrayRangeAPPLE.get(),
    length,
    pointer,
  )
}

///|
let d_glVertexArrayRangeNV : Dispatch = Dispatch::new("glVertexArrayRangeNV")

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexArrayRangeNV(
  fp : CPtr,
  length : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexArrayRangeNV"

///|
pub fn gl_vertex_array_range_nv(length : Int, pointer : Bytes) -> Unit {
  epoxy_glVertexArrayRangeNV(d_glVertexArrayRangeNV.get(), length, pointer)
}

///|
let d_glVertexArraySecondaryColorOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArraySecondaryColorOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArraySecondaryColorOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArraySecondaryColorOffsetEXT"

///|
pub fn gl_vertex_array_secondary_color_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArraySecondaryColorOffsetEXT(
    d_glVertexArraySecondaryColorOffsetEXT.get(),
    vaobj,
    buffer,
    size,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayTexCoordOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayTexCoordOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayTexCoordOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayTexCoordOffsetEXT"

///|
pub fn gl_vertex_array_tex_coord_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayTexCoordOffsetEXT(
    d_glVertexArrayTexCoordOffsetEXT.get(),
    vaobj,
    buffer,
    size,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayVertexAttribBindingEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribBindingEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribBindingEXT(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  bindingindex : UInt,
) -> Unit = "epoxy_glVertexArrayVertexAttribBindingEXT"

///|
pub fn gl_vertex_array_vertex_attrib_binding_ext(
  vaobj : UInt,
  attribindex : UInt,
  bindingindex : UInt,
) -> Unit {
  epoxy_glVertexArrayVertexAttribBindingEXT(
    d_glVertexArrayVertexAttribBindingEXT.get(),
    vaobj,
    attribindex,
    bindingindex,
  )
}

///|
let d_glVertexArrayVertexAttribDivisorEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribDivisorEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribDivisorEXT(
  fp : CPtr,
  vaobj : UInt,
  index : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexArrayVertexAttribDivisorEXT"

///|
pub fn gl_vertex_array_vertex_attrib_divisor_ext(
  vaobj : UInt,
  index : UInt,
  divisor : UInt,
) -> Unit {
  epoxy_glVertexArrayVertexAttribDivisorEXT(
    d_glVertexArrayVertexAttribDivisorEXT.get(),
    vaobj,
    index,
    divisor,
  )
}

///|
let d_glVertexArrayVertexAttribFormatEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribFormatEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribFormatEXT(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexArrayVertexAttribFormatEXT"

///|
pub fn gl_vertex_array_vertex_attrib_format_ext(
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexArrayVertexAttribFormatEXT(
    d_glVertexArrayVertexAttribFormatEXT.get(),
    vaobj,
    attribindex,
    size,
    type_,
    normalized,
    relativeoffset,
  )
}

///|
let d_glVertexArrayVertexAttribIFormatEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribIFormatEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribIFormatEXT(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexArrayVertexAttribIFormatEXT"

///|
pub fn gl_vertex_array_vertex_attrib_i_format_ext(
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexArrayVertexAttribIFormatEXT(
    d_glVertexArrayVertexAttribIFormatEXT.get(),
    vaobj,
    attribindex,
    size,
    type_,
    relativeoffset,
  )
}

///|
let d_glVertexArrayVertexAttribIOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribIOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribIOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayVertexAttribIOffsetEXT"

///|
pub fn gl_vertex_array_vertex_attrib_i_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayVertexAttribIOffsetEXT(
    d_glVertexArrayVertexAttribIOffsetEXT.get(),
    vaobj,
    buffer,
    index,
    size,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayVertexAttribLFormatEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribLFormatEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribLFormatEXT(
  fp : CPtr,
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexArrayVertexAttribLFormatEXT"

///|
pub fn gl_vertex_array_vertex_attrib_l_format_ext(
  vaobj : UInt,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexArrayVertexAttribLFormatEXT(
    d_glVertexArrayVertexAttribLFormatEXT.get(),
    vaobj,
    attribindex,
    size,
    type_,
    relativeoffset,
  )
}

///|
let d_glVertexArrayVertexAttribLOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribLOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribLOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayVertexAttribLOffsetEXT"

///|
pub fn gl_vertex_array_vertex_attrib_l_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayVertexAttribLOffsetEXT(
    d_glVertexArrayVertexAttribLOffsetEXT.get(),
    vaobj,
    buffer,
    index,
    size,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayVertexAttribOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexAttribOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexAttribOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayVertexAttribOffsetEXT"

///|
pub fn gl_vertex_array_vertex_attrib_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayVertexAttribOffsetEXT(
    d_glVertexArrayVertexAttribOffsetEXT.get(),
    vaobj,
    buffer,
    index,
    size,
    type_,
    normalized,
    stride,
    offset,
  )
}

///|
let d_glVertexArrayVertexBindingDivisorEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexBindingDivisorEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexBindingDivisorEXT(
  fp : CPtr,
  vaobj : UInt,
  bindingindex : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexArrayVertexBindingDivisorEXT"

///|
pub fn gl_vertex_array_vertex_binding_divisor_ext(
  vaobj : UInt,
  bindingindex : UInt,
  divisor : UInt,
) -> Unit {
  epoxy_glVertexArrayVertexBindingDivisorEXT(
    d_glVertexArrayVertexBindingDivisorEXT.get(),
    vaobj,
    bindingindex,
    divisor,
  )
}

///|
let d_glVertexArrayVertexBuffer : Dispatch = Dispatch::new(
  "glVertexArrayVertexBuffer",
)

///|
extern "c" fn epoxy_glVertexArrayVertexBuffer(
  fp : CPtr,
  vaobj : UInt,
  bindingindex : UInt,
  buffer : UInt,
  offset : Int64,
  stride : Int,
) -> Unit = "epoxy_glVertexArrayVertexBuffer"

///|
pub fn gl_vertex_array_vertex_buffer(
  vaobj : UInt,
  bindingindex : UInt,
  buffer : UInt,
  offset : Int64,
  stride : Int,
) -> Unit {
  epoxy_glVertexArrayVertexBuffer(
    d_glVertexArrayVertexBuffer.get(),
    vaobj,
    bindingindex,
    buffer,
    offset,
    stride,
  )
}

///|
let d_glVertexArrayVertexOffsetEXT : Dispatch = Dispatch::new(
  "glVertexArrayVertexOffsetEXT",
)

///|
extern "c" fn epoxy_glVertexArrayVertexOffsetEXT(
  fp : CPtr,
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit = "epoxy_glVertexArrayVertexOffsetEXT"

///|
pub fn gl_vertex_array_vertex_offset_ext(
  vaobj : UInt,
  buffer : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  offset : Int64,
) -> Unit {
  epoxy_glVertexArrayVertexOffsetEXT(
    d_glVertexArrayVertexOffsetEXT.get(),
    vaobj,
    buffer,
    size,
    type_,
    stride,
    offset,
  )
}

///|
let d_glVertexAttrib1d : Dispatch = Dispatch::with_aliases("glVertexAttrib1d", [
  "glVertexAttrib1dARB", "glVertexAttrib1dNV",
])

///|
extern "c" fn epoxy_glVertexAttrib1d(
  fp : CPtr,
  index : UInt,
  x : Double,
) -> Unit = "epoxy_glVertexAttrib1d"

///|
pub fn gl_vertex_attrib1d(index : UInt, x : Double) -> Unit {
  epoxy_glVertexAttrib1d(d_glVertexAttrib1d.get(), index, x)
}

///|
let d_glVertexAttrib1dARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1dARB",
  ["glVertexAttrib1d", "glVertexAttrib1dNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib1dARB(
  fp : CPtr,
  index : UInt,
  x : Double,
) -> Unit = "epoxy_glVertexAttrib1dARB"

///|
pub fn gl_vertex_attrib1d_arb(index : UInt, x : Double) -> Unit {
  epoxy_glVertexAttrib1dARB(d_glVertexAttrib1dARB.get(), index, x)
}

///|
let d_glVertexAttrib1dNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1dNV",
  ["glVertexAttrib1d", "glVertexAttrib1dARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib1dNV(
  fp : CPtr,
  index : UInt,
  x : Double,
) -> Unit = "epoxy_glVertexAttrib1dNV"

///|
pub fn gl_vertex_attrib1d_nv(index : UInt, x : Double) -> Unit {
  epoxy_glVertexAttrib1dNV(d_glVertexAttrib1dNV.get(), index, x)
}

///|
let d_glVertexAttrib1dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1dv",
  ["glVertexAttrib1dvARB", "glVertexAttrib1dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib1dv"

///|
pub fn gl_vertex_attrib1dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib1dv(d_glVertexAttrib1dv.get(), index, v)
}

///|
let d_glVertexAttrib1dvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1dvARB",
  ["glVertexAttrib1dv", "glVertexAttrib1dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1dvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib1dvARB"

///|
pub fn gl_vertex_attrib1dv_arb(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib1dvARB(d_glVertexAttrib1dvARB.get(), index, v)
}

///|
let d_glVertexAttrib1dvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1dvNV",
  ["glVertexAttrib1dv", "glVertexAttrib1dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1dvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib1dvNV"

///|
pub fn gl_vertex_attrib1dv_nv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib1dvNV(d_glVertexAttrib1dvNV.get(), index, v)
}

///|
let d_glVertexAttrib1f : Dispatch = Dispatch::with_aliases("glVertexAttrib1f", [
  "glVertexAttrib1fARB", "glVertexAttrib1fNV",
])

///|
extern "c" fn epoxy_glVertexAttrib1f(
  fp : CPtr,
  index : UInt,
  x : Float,
) -> Unit = "epoxy_glVertexAttrib1f"

///|
pub fn gl_vertex_attrib1f(index : UInt, x : Float) -> Unit {
  epoxy_glVertexAttrib1f(d_glVertexAttrib1f.get(), index, x)
}

///|
let d_glVertexAttrib1fARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1fARB",
  ["glVertexAttrib1f", "glVertexAttrib1fNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib1fARB(
  fp : CPtr,
  index : UInt,
  x : Float,
) -> Unit = "epoxy_glVertexAttrib1fARB"

///|
pub fn gl_vertex_attrib1f_arb(index : UInt, x : Float) -> Unit {
  epoxy_glVertexAttrib1fARB(d_glVertexAttrib1fARB.get(), index, x)
}

///|
let d_glVertexAttrib1fNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1fNV",
  ["glVertexAttrib1f", "glVertexAttrib1fARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib1fNV(
  fp : CPtr,
  index : UInt,
  x : Float,
) -> Unit = "epoxy_glVertexAttrib1fNV"

///|
pub fn gl_vertex_attrib1f_nv(index : UInt, x : Float) -> Unit {
  epoxy_glVertexAttrib1fNV(d_glVertexAttrib1fNV.get(), index, x)
}

///|
let d_glVertexAttrib1fv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1fv",
  ["glVertexAttrib1fvARB", "glVertexAttrib1fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1fv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib1fv"

///|
pub fn gl_vertex_attrib1fv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib1fv(d_glVertexAttrib1fv.get(), index, v)
}

///|
let d_glVertexAttrib1fvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1fvARB",
  ["glVertexAttrib1fv", "glVertexAttrib1fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1fvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib1fvARB"

///|
pub fn gl_vertex_attrib1fv_arb(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib1fvARB(d_glVertexAttrib1fvARB.get(), index, v)
}

///|
let d_glVertexAttrib1fvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1fvNV",
  ["glVertexAttrib1fv", "glVertexAttrib1fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1fvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib1fvNV"

///|
pub fn gl_vertex_attrib1fv_nv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib1fvNV(d_glVertexAttrib1fvNV.get(), index, v)
}

///|
let d_glVertexAttrib1hNV : Dispatch = Dispatch::new("glVertexAttrib1hNV")

///|
extern "c" fn epoxy_glVertexAttrib1hNV(
  fp : CPtr,
  index : UInt,
  x : Int,
) -> Unit = "epoxy_glVertexAttrib1hNV"

///|
pub fn gl_vertex_attrib1h_nv(index : UInt, x : Int) -> Unit {
  epoxy_glVertexAttrib1hNV(d_glVertexAttrib1hNV.get(), index, x)
}

///|
let d_glVertexAttrib1hvNV : Dispatch = Dispatch::new("glVertexAttrib1hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1hvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib1hvNV"

///|
pub fn gl_vertex_attrib1hv_nv(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib1hvNV(d_glVertexAttrib1hvNV.get(), index, v)
}

///|
let d_glVertexAttrib1s : Dispatch = Dispatch::with_aliases("glVertexAttrib1s", [
  "glVertexAttrib1sARB", "glVertexAttrib1sNV",
])

///|
extern "c" fn epoxy_glVertexAttrib1s(fp : CPtr, index : UInt, x : Int) -> Unit = "epoxy_glVertexAttrib1s"

///|
pub fn gl_vertex_attrib1s(index : UInt, x : Int) -> Unit {
  epoxy_glVertexAttrib1s(d_glVertexAttrib1s.get(), index, x)
}

///|
let d_glVertexAttrib1sARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1sARB",
  ["glVertexAttrib1s", "glVertexAttrib1sNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib1sARB(
  fp : CPtr,
  index : UInt,
  x : Int,
) -> Unit = "epoxy_glVertexAttrib1sARB"

///|
pub fn gl_vertex_attrib1s_arb(index : UInt, x : Int) -> Unit {
  epoxy_glVertexAttrib1sARB(d_glVertexAttrib1sARB.get(), index, x)
}

///|
let d_glVertexAttrib1sNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1sNV",
  ["glVertexAttrib1s", "glVertexAttrib1sARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib1sNV(
  fp : CPtr,
  index : UInt,
  x : Int,
) -> Unit = "epoxy_glVertexAttrib1sNV"

///|
pub fn gl_vertex_attrib1s_nv(index : UInt, x : Int) -> Unit {
  epoxy_glVertexAttrib1sNV(d_glVertexAttrib1sNV.get(), index, x)
}

///|
let d_glVertexAttrib1sv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1sv",
  ["glVertexAttrib1svARB", "glVertexAttrib1svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1sv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib1sv"

///|
pub fn gl_vertex_attrib1sv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib1sv(d_glVertexAttrib1sv.get(), index, v)
}

///|
let d_glVertexAttrib1svARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1svARB",
  ["glVertexAttrib1sv", "glVertexAttrib1svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1svARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib1svARB"

///|
pub fn gl_vertex_attrib1sv_arb(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib1svARB(d_glVertexAttrib1svARB.get(), index, v)
}

///|
let d_glVertexAttrib1svNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib1svNV",
  ["glVertexAttrib1sv", "glVertexAttrib1svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib1svNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib1svNV"

///|
pub fn gl_vertex_attrib1sv_nv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib1svNV(d_glVertexAttrib1svNV.get(), index, v)
}

///|
let d_glVertexAttrib2d : Dispatch = Dispatch::with_aliases("glVertexAttrib2d", [
  "glVertexAttrib2dARB", "glVertexAttrib2dNV",
])

///|
extern "c" fn epoxy_glVertexAttrib2d(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glVertexAttrib2d"

///|
pub fn gl_vertex_attrib2d(index : UInt, x : Double, y : Double) -> Unit {
  epoxy_glVertexAttrib2d(d_glVertexAttrib2d.get(), index, x, y)
}

///|
let d_glVertexAttrib2dARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2dARB",
  ["glVertexAttrib2d", "glVertexAttrib2dNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib2dARB(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glVertexAttrib2dARB"

///|
pub fn gl_vertex_attrib2d_arb(index : UInt, x : Double, y : Double) -> Unit {
  epoxy_glVertexAttrib2dARB(d_glVertexAttrib2dARB.get(), index, x, y)
}

///|
let d_glVertexAttrib2dNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2dNV",
  ["glVertexAttrib2d", "glVertexAttrib2dARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib2dNV(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glVertexAttrib2dNV"

///|
pub fn gl_vertex_attrib2d_nv(index : UInt, x : Double, y : Double) -> Unit {
  epoxy_glVertexAttrib2dNV(d_glVertexAttrib2dNV.get(), index, x, y)
}

///|
let d_glVertexAttrib2dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2dv",
  ["glVertexAttrib2dvARB", "glVertexAttrib2dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib2dv"

///|
pub fn gl_vertex_attrib2dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib2dv(d_glVertexAttrib2dv.get(), index, v)
}

///|
let d_glVertexAttrib2dvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2dvARB",
  ["glVertexAttrib2dv", "glVertexAttrib2dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2dvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib2dvARB"

///|
pub fn gl_vertex_attrib2dv_arb(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib2dvARB(d_glVertexAttrib2dvARB.get(), index, v)
}

///|
let d_glVertexAttrib2dvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2dvNV",
  ["glVertexAttrib2dv", "glVertexAttrib2dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2dvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib2dvNV"

///|
pub fn gl_vertex_attrib2dv_nv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib2dvNV(d_glVertexAttrib2dvNV.get(), index, v)
}

///|
let d_glVertexAttrib2f : Dispatch = Dispatch::with_aliases("glVertexAttrib2f", [
  "glVertexAttrib2fARB", "glVertexAttrib2fNV",
])

///|
extern "c" fn epoxy_glVertexAttrib2f(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
) -> Unit = "epoxy_glVertexAttrib2f"

///|
pub fn gl_vertex_attrib2f(index : UInt, x : Float, y : Float) -> Unit {
  epoxy_glVertexAttrib2f(d_glVertexAttrib2f.get(), index, x, y)
}

///|
let d_glVertexAttrib2fARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2fARB",
  ["glVertexAttrib2f", "glVertexAttrib2fNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib2fARB(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
) -> Unit = "epoxy_glVertexAttrib2fARB"

///|
pub fn gl_vertex_attrib2f_arb(index : UInt, x : Float, y : Float) -> Unit {
  epoxy_glVertexAttrib2fARB(d_glVertexAttrib2fARB.get(), index, x, y)
}

///|
let d_glVertexAttrib2fNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2fNV",
  ["glVertexAttrib2f", "glVertexAttrib2fARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib2fNV(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
) -> Unit = "epoxy_glVertexAttrib2fNV"

///|
pub fn gl_vertex_attrib2f_nv(index : UInt, x : Float, y : Float) -> Unit {
  epoxy_glVertexAttrib2fNV(d_glVertexAttrib2fNV.get(), index, x, y)
}

///|
let d_glVertexAttrib2fv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2fv",
  ["glVertexAttrib2fvARB", "glVertexAttrib2fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2fv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib2fv"

///|
pub fn gl_vertex_attrib2fv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib2fv(d_glVertexAttrib2fv.get(), index, v)
}

///|
let d_glVertexAttrib2fvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2fvARB",
  ["glVertexAttrib2fv", "glVertexAttrib2fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2fvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib2fvARB"

///|
pub fn gl_vertex_attrib2fv_arb(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib2fvARB(d_glVertexAttrib2fvARB.get(), index, v)
}

///|
let d_glVertexAttrib2fvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2fvNV",
  ["glVertexAttrib2fv", "glVertexAttrib2fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2fvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib2fvNV"

///|
pub fn gl_vertex_attrib2fv_nv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib2fvNV(d_glVertexAttrib2fvNV.get(), index, v)
}

///|
let d_glVertexAttrib2hNV : Dispatch = Dispatch::new("glVertexAttrib2hNV")

///|
extern "c" fn epoxy_glVertexAttrib2hNV(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexAttrib2hNV"

///|
pub fn gl_vertex_attrib2h_nv(index : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexAttrib2hNV(d_glVertexAttrib2hNV.get(), index, x, y)
}

///|
let d_glVertexAttrib2hvNV : Dispatch = Dispatch::new("glVertexAttrib2hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2hvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib2hvNV"

///|
pub fn gl_vertex_attrib2hv_nv(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib2hvNV(d_glVertexAttrib2hvNV.get(), index, v)
}

///|
let d_glVertexAttrib2s : Dispatch = Dispatch::with_aliases("glVertexAttrib2s", [
  "glVertexAttrib2sARB", "glVertexAttrib2sNV",
])

///|
extern "c" fn epoxy_glVertexAttrib2s(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexAttrib2s"

///|
pub fn gl_vertex_attrib2s(index : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexAttrib2s(d_glVertexAttrib2s.get(), index, x, y)
}

///|
let d_glVertexAttrib2sARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2sARB",
  ["glVertexAttrib2s", "glVertexAttrib2sNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib2sARB(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexAttrib2sARB"

///|
pub fn gl_vertex_attrib2s_arb(index : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexAttrib2sARB(d_glVertexAttrib2sARB.get(), index, x, y)
}

///|
let d_glVertexAttrib2sNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2sNV",
  ["glVertexAttrib2s", "glVertexAttrib2sARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib2sNV(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexAttrib2sNV"

///|
pub fn gl_vertex_attrib2s_nv(index : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexAttrib2sNV(d_glVertexAttrib2sNV.get(), index, x, y)
}

///|
let d_glVertexAttrib2sv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2sv",
  ["glVertexAttrib2svARB", "glVertexAttrib2svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2sv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib2sv"

///|
pub fn gl_vertex_attrib2sv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib2sv(d_glVertexAttrib2sv.get(), index, v)
}

///|
let d_glVertexAttrib2svARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2svARB",
  ["glVertexAttrib2sv", "glVertexAttrib2svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2svARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib2svARB"

///|
pub fn gl_vertex_attrib2sv_arb(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib2svARB(d_glVertexAttrib2svARB.get(), index, v)
}

///|
let d_glVertexAttrib2svNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib2svNV",
  ["glVertexAttrib2sv", "glVertexAttrib2svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib2svNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib2svNV"

///|
pub fn gl_vertex_attrib2sv_nv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib2svNV(d_glVertexAttrib2svNV.get(), index, v)
}

///|
let d_glVertexAttrib3d : Dispatch = Dispatch::with_aliases("glVertexAttrib3d", [
  "glVertexAttrib3dARB", "glVertexAttrib3dNV",
])

///|
extern "c" fn epoxy_glVertexAttrib3d(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glVertexAttrib3d"

///|
pub fn gl_vertex_attrib3d(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glVertexAttrib3d(d_glVertexAttrib3d.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3dARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3dARB",
  ["glVertexAttrib3d", "glVertexAttrib3dNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib3dARB(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glVertexAttrib3dARB"

///|
pub fn gl_vertex_attrib3d_arb(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glVertexAttrib3dARB(d_glVertexAttrib3dARB.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3dNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3dNV",
  ["glVertexAttrib3d", "glVertexAttrib3dARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib3dNV(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glVertexAttrib3dNV"

///|
pub fn gl_vertex_attrib3d_nv(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glVertexAttrib3dNV(d_glVertexAttrib3dNV.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3dv",
  ["glVertexAttrib3dvARB", "glVertexAttrib3dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib3dv"

///|
pub fn gl_vertex_attrib3dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib3dv(d_glVertexAttrib3dv.get(), index, v)
}

///|
let d_glVertexAttrib3dvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3dvARB",
  ["glVertexAttrib3dv", "glVertexAttrib3dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3dvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib3dvARB"

///|
pub fn gl_vertex_attrib3dv_arb(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib3dvARB(d_glVertexAttrib3dvARB.get(), index, v)
}

///|
let d_glVertexAttrib3dvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3dvNV",
  ["glVertexAttrib3dv", "glVertexAttrib3dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3dvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib3dvNV"

///|
pub fn gl_vertex_attrib3dv_nv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib3dvNV(d_glVertexAttrib3dvNV.get(), index, v)
}

///|
let d_glVertexAttrib3f : Dispatch = Dispatch::with_aliases("glVertexAttrib3f", [
  "glVertexAttrib3fARB", "glVertexAttrib3fNV",
])

///|
extern "c" fn epoxy_glVertexAttrib3f(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glVertexAttrib3f"

///|
pub fn gl_vertex_attrib3f(
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glVertexAttrib3f(d_glVertexAttrib3f.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3fARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3fARB",
  ["glVertexAttrib3f", "glVertexAttrib3fNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib3fARB(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glVertexAttrib3fARB"

///|
pub fn gl_vertex_attrib3f_arb(
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glVertexAttrib3fARB(d_glVertexAttrib3fARB.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3fNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3fNV",
  ["glVertexAttrib3f", "glVertexAttrib3fARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib3fNV(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glVertexAttrib3fNV"

///|
pub fn gl_vertex_attrib3f_nv(
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glVertexAttrib3fNV(d_glVertexAttrib3fNV.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3fv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3fv",
  ["glVertexAttrib3fvARB", "glVertexAttrib3fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3fv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib3fv"

///|
pub fn gl_vertex_attrib3fv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib3fv(d_glVertexAttrib3fv.get(), index, v)
}

///|
let d_glVertexAttrib3fvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3fvARB",
  ["glVertexAttrib3fv", "glVertexAttrib3fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3fvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib3fvARB"

///|
pub fn gl_vertex_attrib3fv_arb(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib3fvARB(d_glVertexAttrib3fvARB.get(), index, v)
}

///|
let d_glVertexAttrib3fvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3fvNV",
  ["glVertexAttrib3fv", "glVertexAttrib3fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3fvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib3fvNV"

///|
pub fn gl_vertex_attrib3fv_nv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib3fvNV(d_glVertexAttrib3fvNV.get(), index, v)
}

///|
let d_glVertexAttrib3hNV : Dispatch = Dispatch::new("glVertexAttrib3hNV")

///|
extern "c" fn epoxy_glVertexAttrib3hNV(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexAttrib3hNV"

///|
pub fn gl_vertex_attrib3h_nv(index : UInt, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertexAttrib3hNV(d_glVertexAttrib3hNV.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3hvNV : Dispatch = Dispatch::new("glVertexAttrib3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3hvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib3hvNV"

///|
pub fn gl_vertex_attrib3hv_nv(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib3hvNV(d_glVertexAttrib3hvNV.get(), index, v)
}

///|
let d_glVertexAttrib3s : Dispatch = Dispatch::with_aliases("glVertexAttrib3s", [
  "glVertexAttrib3sARB", "glVertexAttrib3sNV",
])

///|
extern "c" fn epoxy_glVertexAttrib3s(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexAttrib3s"

///|
pub fn gl_vertex_attrib3s(index : UInt, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertexAttrib3s(d_glVertexAttrib3s.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3sARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3sARB",
  ["glVertexAttrib3s", "glVertexAttrib3sNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib3sARB(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexAttrib3sARB"

///|
pub fn gl_vertex_attrib3s_arb(index : UInt, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertexAttrib3sARB(d_glVertexAttrib3sARB.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3sNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3sNV",
  ["glVertexAttrib3s", "glVertexAttrib3sARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib3sNV(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexAttrib3sNV"

///|
pub fn gl_vertex_attrib3s_nv(index : UInt, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertexAttrib3sNV(d_glVertexAttrib3sNV.get(), index, x, y, z)
}

///|
let d_glVertexAttrib3sv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3sv",
  ["glVertexAttrib3svARB", "glVertexAttrib3svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3sv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib3sv"

///|
pub fn gl_vertex_attrib3sv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib3sv(d_glVertexAttrib3sv.get(), index, v)
}

///|
let d_glVertexAttrib3svARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3svARB",
  ["glVertexAttrib3sv", "glVertexAttrib3svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3svARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib3svARB"

///|
pub fn gl_vertex_attrib3sv_arb(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib3svARB(d_glVertexAttrib3svARB.get(), index, v)
}

///|
let d_glVertexAttrib3svNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib3svNV",
  ["glVertexAttrib3sv", "glVertexAttrib3svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib3svNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib3svNV"

///|
pub fn gl_vertex_attrib3sv_nv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib3svNV(d_glVertexAttrib3svNV.get(), index, v)
}

///|
let d_glVertexAttrib4Nbv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4Nbv",
  ["glVertexAttrib4NbvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4Nbv(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4Nbv"

///|
pub fn gl_vertex_attrib4_nbv(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4Nbv(d_glVertexAttrib4Nbv.get(), index, v)
}

///|
let d_glVertexAttrib4NbvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4NbvARB",
  ["glVertexAttrib4Nbv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4NbvARB(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4NbvARB"

///|
pub fn gl_vertex_attrib4_nbv_arb(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4NbvARB(d_glVertexAttrib4NbvARB.get(), index, v)
}

///|
let d_glVertexAttrib4Niv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4Niv",
  ["glVertexAttrib4NivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4Niv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttrib4Niv"

///|
pub fn gl_vertex_attrib4_niv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttrib4Niv(d_glVertexAttrib4Niv.get(), index, v)
}

///|
let d_glVertexAttrib4NivARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4NivARB",
  ["glVertexAttrib4Niv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4NivARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttrib4NivARB"

///|
pub fn gl_vertex_attrib4_niv_arb(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttrib4NivARB(d_glVertexAttrib4NivARB.get(), index, v)
}

///|
let d_glVertexAttrib4Nsv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4Nsv",
  ["glVertexAttrib4NsvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4Nsv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib4Nsv"

///|
pub fn gl_vertex_attrib4_nsv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib4Nsv(d_glVertexAttrib4Nsv.get(), index, v)
}

///|
let d_glVertexAttrib4NsvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4NsvARB",
  ["glVertexAttrib4Nsv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4NsvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib4NsvARB"

///|
pub fn gl_vertex_attrib4_nsv_arb(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib4NsvARB(d_glVertexAttrib4NsvARB.get(), index, v)
}

///|
let d_glVertexAttrib4Nub : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4Nub",
  ["glVertexAttrib4NubARB", "glVertexAttrib4ubNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib4Nub(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttrib4Nub"

///|
pub fn gl_vertex_attrib4_nub(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttrib4Nub(d_glVertexAttrib4Nub.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4NubARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4NubARB",
  ["glVertexAttrib4Nub", "glVertexAttrib4ubNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib4NubARB(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttrib4NubARB"

///|
pub fn gl_vertex_attrib4_nub_arb(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttrib4NubARB(d_glVertexAttrib4NubARB.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4Nubv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4Nubv",
  ["glVertexAttrib4NubvARB", "glVertexAttrib4ubvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4Nubv(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4Nubv"

///|
pub fn gl_vertex_attrib4_nubv(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4Nubv(d_glVertexAttrib4Nubv.get(), index, v)
}

///|
let d_glVertexAttrib4NubvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4NubvARB",
  ["glVertexAttrib4Nubv", "glVertexAttrib4ubvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4NubvARB(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4NubvARB"

///|
pub fn gl_vertex_attrib4_nubv_arb(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4NubvARB(d_glVertexAttrib4NubvARB.get(), index, v)
}

///|
let d_glVertexAttrib4Nuiv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4Nuiv",
  ["glVertexAttrib4NuivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4Nuiv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttrib4Nuiv"

///|
pub fn gl_vertex_attrib4_nuiv(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttrib4Nuiv(d_glVertexAttrib4Nuiv.get(), index, v)
}

///|
let d_glVertexAttrib4NuivARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4NuivARB",
  ["glVertexAttrib4Nuiv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4NuivARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttrib4NuivARB"

///|
pub fn gl_vertex_attrib4_nuiv_arb(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttrib4NuivARB(d_glVertexAttrib4NuivARB.get(), index, v)
}

///|
let d_glVertexAttrib4Nusv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4Nusv",
  ["glVertexAttrib4NusvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4Nusv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib4Nusv"

///|
pub fn gl_vertex_attrib4_nusv(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib4Nusv(d_glVertexAttrib4Nusv.get(), index, v)
}

///|
let d_glVertexAttrib4NusvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4NusvARB",
  ["glVertexAttrib4Nusv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4NusvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib4NusvARB"

///|
pub fn gl_vertex_attrib4_nusv_arb(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib4NusvARB(d_glVertexAttrib4NusvARB.get(), index, v)
}

///|
let d_glVertexAttrib4bv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4bv",
  ["glVertexAttrib4bvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4bv(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4bv"

///|
pub fn gl_vertex_attrib4bv(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4bv(d_glVertexAttrib4bv.get(), index, v)
}

///|
let d_glVertexAttrib4bvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4bvARB",
  ["glVertexAttrib4bv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4bvARB(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4bvARB"

///|
pub fn gl_vertex_attrib4bv_arb(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4bvARB(d_glVertexAttrib4bvARB.get(), index, v)
}

///|
let d_glVertexAttrib4d : Dispatch = Dispatch::with_aliases("glVertexAttrib4d", [
  "glVertexAttrib4dARB", "glVertexAttrib4dNV",
])

///|
extern "c" fn epoxy_glVertexAttrib4d(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glVertexAttrib4d"

///|
pub fn gl_vertex_attrib4d(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glVertexAttrib4d(d_glVertexAttrib4d.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4dARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4dARB",
  ["glVertexAttrib4d", "glVertexAttrib4dNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib4dARB(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glVertexAttrib4dARB"

///|
pub fn gl_vertex_attrib4d_arb(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glVertexAttrib4dARB(d_glVertexAttrib4dARB.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4dNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4dNV",
  ["glVertexAttrib4d", "glVertexAttrib4dARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib4dNV(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glVertexAttrib4dNV"

///|
pub fn gl_vertex_attrib4d_nv(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glVertexAttrib4dNV(d_glVertexAttrib4dNV.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4dv",
  ["glVertexAttrib4dvARB", "glVertexAttrib4dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib4dv"

///|
pub fn gl_vertex_attrib4dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib4dv(d_glVertexAttrib4dv.get(), index, v)
}

///|
let d_glVertexAttrib4dvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4dvARB",
  ["glVertexAttrib4dv", "glVertexAttrib4dvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4dvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib4dvARB"

///|
pub fn gl_vertex_attrib4dv_arb(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib4dvARB(d_glVertexAttrib4dvARB.get(), index, v)
}

///|
let d_glVertexAttrib4dvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4dvNV",
  ["glVertexAttrib4dv", "glVertexAttrib4dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4dvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttrib4dvNV"

///|
pub fn gl_vertex_attrib4dv_nv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttrib4dvNV(d_glVertexAttrib4dvNV.get(), index, v)
}

///|
let d_glVertexAttrib4f : Dispatch = Dispatch::with_aliases("glVertexAttrib4f", [
  "glVertexAttrib4fARB", "glVertexAttrib4fNV",
])

///|
extern "c" fn epoxy_glVertexAttrib4f(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glVertexAttrib4f"

///|
pub fn gl_vertex_attrib4f(
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glVertexAttrib4f(d_glVertexAttrib4f.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4fARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4fARB",
  ["glVertexAttrib4f", "glVertexAttrib4fNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib4fARB(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glVertexAttrib4fARB"

///|
pub fn gl_vertex_attrib4f_arb(
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glVertexAttrib4fARB(d_glVertexAttrib4fARB.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4fNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4fNV",
  ["glVertexAttrib4f", "glVertexAttrib4fARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib4fNV(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glVertexAttrib4fNV"

///|
pub fn gl_vertex_attrib4f_nv(
  index : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glVertexAttrib4fNV(d_glVertexAttrib4fNV.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4fv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4fv",
  ["glVertexAttrib4fvARB", "glVertexAttrib4fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4fv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib4fv"

///|
pub fn gl_vertex_attrib4fv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib4fv(d_glVertexAttrib4fv.get(), index, v)
}

///|
let d_glVertexAttrib4fvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4fvARB",
  ["glVertexAttrib4fv", "glVertexAttrib4fvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4fvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib4fvARB"

///|
pub fn gl_vertex_attrib4fv_arb(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib4fvARB(d_glVertexAttrib4fvARB.get(), index, v)
}

///|
let d_glVertexAttrib4fvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4fvNV",
  ["glVertexAttrib4fv", "glVertexAttrib4fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4fvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttrib4fvNV"

///|
pub fn gl_vertex_attrib4fv_nv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glVertexAttrib4fvNV(d_glVertexAttrib4fvNV.get(), index, v)
}

///|
let d_glVertexAttrib4hNV : Dispatch = Dispatch::new("glVertexAttrib4hNV")

///|
extern "c" fn epoxy_glVertexAttrib4hNV(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttrib4hNV"

///|
pub fn gl_vertex_attrib4h_nv(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttrib4hNV(d_glVertexAttrib4hNV.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4hvNV : Dispatch = Dispatch::new("glVertexAttrib4hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4hvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib4hvNV"

///|
pub fn gl_vertex_attrib4hv_nv(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib4hvNV(d_glVertexAttrib4hvNV.get(), index, v)
}

///|
let d_glVertexAttrib4iv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4iv",
  ["glVertexAttrib4ivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4iv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttrib4iv"

///|
pub fn gl_vertex_attrib4iv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttrib4iv(d_glVertexAttrib4iv.get(), index, v)
}

///|
let d_glVertexAttrib4ivARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4ivARB",
  ["glVertexAttrib4iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4ivARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttrib4ivARB"

///|
pub fn gl_vertex_attrib4iv_arb(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttrib4ivARB(d_glVertexAttrib4ivARB.get(), index, v)
}

///|
let d_glVertexAttrib4s : Dispatch = Dispatch::with_aliases("glVertexAttrib4s", [
  "glVertexAttrib4sARB", "glVertexAttrib4sNV",
])

///|
extern "c" fn epoxy_glVertexAttrib4s(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttrib4s"

///|
pub fn gl_vertex_attrib4s(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttrib4s(d_glVertexAttrib4s.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4sARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4sARB",
  ["glVertexAttrib4s", "glVertexAttrib4sNV"],
)

///|
extern "c" fn epoxy_glVertexAttrib4sARB(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttrib4sARB"

///|
pub fn gl_vertex_attrib4s_arb(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttrib4sARB(d_glVertexAttrib4sARB.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4sNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4sNV",
  ["glVertexAttrib4s", "glVertexAttrib4sARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib4sNV(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttrib4sNV"

///|
pub fn gl_vertex_attrib4s_nv(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttrib4sNV(d_glVertexAttrib4sNV.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4sv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4sv",
  ["glVertexAttrib4svARB", "glVertexAttrib4svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4sv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib4sv"

///|
pub fn gl_vertex_attrib4sv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib4sv(d_glVertexAttrib4sv.get(), index, v)
}

///|
let d_glVertexAttrib4svARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4svARB",
  ["glVertexAttrib4sv", "glVertexAttrib4svNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4svARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib4svARB"

///|
pub fn gl_vertex_attrib4sv_arb(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib4svARB(d_glVertexAttrib4svARB.get(), index, v)
}

///|
let d_glVertexAttrib4svNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4svNV",
  ["glVertexAttrib4sv", "glVertexAttrib4svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4svNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttrib4svNV"

///|
pub fn gl_vertex_attrib4sv_nv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttrib4svNV(d_glVertexAttrib4svNV.get(), index, v)
}

///|
let d_glVertexAttrib4ubNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4ubNV",
  ["glVertexAttrib4Nub", "glVertexAttrib4NubARB"],
)

///|
extern "c" fn epoxy_glVertexAttrib4ubNV(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttrib4ubNV"

///|
pub fn gl_vertex_attrib4ub_nv(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttrib4ubNV(d_glVertexAttrib4ubNV.get(), index, x, y, z, w)
}

///|
let d_glVertexAttrib4ubv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4ubv",
  ["glVertexAttrib4ubvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4ubv(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4ubv"

///|
pub fn gl_vertex_attrib4ubv(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4ubv(d_glVertexAttrib4ubv.get(), index, v)
}

///|
let d_glVertexAttrib4ubvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4ubvARB",
  ["glVertexAttrib4ubv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4ubvARB(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4ubvARB"

///|
pub fn gl_vertex_attrib4ubv_arb(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4ubvARB(d_glVertexAttrib4ubvARB.get(), index, v)
}

///|
let d_glVertexAttrib4ubvNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4ubvNV",
  ["glVertexAttrib4Nubv", "glVertexAttrib4NubvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4ubvNV(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttrib4ubvNV"

///|
pub fn gl_vertex_attrib4ubv_nv(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttrib4ubvNV(d_glVertexAttrib4ubvNV.get(), index, v)
}

///|
let d_glVertexAttrib4uiv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4uiv",
  ["glVertexAttrib4uivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4uiv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttrib4uiv"

///|
pub fn gl_vertex_attrib4uiv(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttrib4uiv(d_glVertexAttrib4uiv.get(), index, v)
}

///|
let d_glVertexAttrib4uivARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4uivARB",
  ["glVertexAttrib4uiv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4uivARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttrib4uivARB"

///|
pub fn gl_vertex_attrib4uiv_arb(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttrib4uivARB(d_glVertexAttrib4uivARB.get(), index, v)
}

///|
let d_glVertexAttrib4usv : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4usv",
  ["glVertexAttrib4usvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4usv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib4usv"

///|
pub fn gl_vertex_attrib4usv(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib4usv(d_glVertexAttrib4usv.get(), index, v)
}

///|
let d_glVertexAttrib4usvARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttrib4usvARB",
  ["glVertexAttrib4usv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttrib4usvARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttrib4usvARB"

///|
pub fn gl_vertex_attrib4usv_arb(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttrib4usvARB(d_glVertexAttrib4usvARB.get(), index, v)
}

///|
let d_glVertexAttribArrayObjectATI : Dispatch = Dispatch::new(
  "glVertexAttribArrayObjectATI",
)

///|
extern "c" fn epoxy_glVertexAttribArrayObjectATI(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  buffer : UInt,
  offset : UInt,
) -> Unit = "epoxy_glVertexAttribArrayObjectATI"

///|
pub fn gl_vertex_attrib_array_object_ati(
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  buffer : UInt,
  offset : UInt,
) -> Unit {
  epoxy_glVertexAttribArrayObjectATI(
    d_glVertexAttribArrayObjectATI.get(),
    index,
    size,
    type_,
    normalized,
    stride,
    buffer,
    offset,
  )
}

///|
let d_glVertexAttribBinding : Dispatch = Dispatch::new("glVertexAttribBinding")

///|
extern "c" fn epoxy_glVertexAttribBinding(
  fp : CPtr,
  attribindex : UInt,
  bindingindex : UInt,
) -> Unit = "epoxy_glVertexAttribBinding"

///|
pub fn gl_vertex_attrib_binding(
  attribindex : UInt,
  bindingindex : UInt,
) -> Unit {
  epoxy_glVertexAttribBinding(
    d_glVertexAttribBinding.get(),
    attribindex,
    bindingindex,
  )
}

///|
let d_glVertexAttribDivisor : Dispatch = Dispatch::with_aliases(
  "glVertexAttribDivisor",
  [
    "glVertexAttribDivisorANGLE", "glVertexAttribDivisorARB", "glVertexAttribDivisorEXT",
    "glVertexAttribDivisorNV",
  ],
)

///|
extern "c" fn epoxy_glVertexAttribDivisor(
  fp : CPtr,
  index : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexAttribDivisor"

///|
pub fn gl_vertex_attrib_divisor(index : UInt, divisor : UInt) -> Unit {
  epoxy_glVertexAttribDivisor(d_glVertexAttribDivisor.get(), index, divisor)
}

///|
let d_glVertexAttribDivisorANGLE : Dispatch = Dispatch::with_aliases(
  "glVertexAttribDivisorANGLE",
  [
    "glVertexAttribDivisor", "glVertexAttribDivisorARB", "glVertexAttribDivisorEXT",
    "glVertexAttribDivisorNV",
  ],
)

///|
extern "c" fn epoxy_glVertexAttribDivisorANGLE(
  fp : CPtr,
  index : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexAttribDivisorANGLE"

///|
pub fn gl_vertex_attrib_divisor_angle(index : UInt, divisor : UInt) -> Unit {
  epoxy_glVertexAttribDivisorANGLE(
    d_glVertexAttribDivisorANGLE.get(),
    index,
    divisor,
  )
}

///|
let d_glVertexAttribDivisorARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttribDivisorARB",
  [
    "glVertexAttribDivisor", "glVertexAttribDivisorANGLE", "glVertexAttribDivisorEXT",
    "glVertexAttribDivisorNV",
  ],
)

///|
extern "c" fn epoxy_glVertexAttribDivisorARB(
  fp : CPtr,
  index : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexAttribDivisorARB"

///|
pub fn gl_vertex_attrib_divisor_arb(index : UInt, divisor : UInt) -> Unit {
  epoxy_glVertexAttribDivisorARB(
    d_glVertexAttribDivisorARB.get(),
    index,
    divisor,
  )
}

///|
let d_glVertexAttribDivisorEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribDivisorEXT",
  [
    "glVertexAttribDivisor", "glVertexAttribDivisorANGLE", "glVertexAttribDivisorARB",
    "glVertexAttribDivisorNV",
  ],
)

///|
extern "c" fn epoxy_glVertexAttribDivisorEXT(
  fp : CPtr,
  index : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexAttribDivisorEXT"

///|
pub fn gl_vertex_attrib_divisor_ext(index : UInt, divisor : UInt) -> Unit {
  epoxy_glVertexAttribDivisorEXT(
    d_glVertexAttribDivisorEXT.get(),
    index,
    divisor,
  )
}

///|
let d_glVertexAttribDivisorNV : Dispatch = Dispatch::with_aliases(
  "glVertexAttribDivisorNV",
  [
    "glVertexAttribDivisor", "glVertexAttribDivisorANGLE", "glVertexAttribDivisorARB",
    "glVertexAttribDivisorEXT",
  ],
)

///|
extern "c" fn epoxy_glVertexAttribDivisorNV(
  fp : CPtr,
  index : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexAttribDivisorNV"

///|
pub fn gl_vertex_attrib_divisor_nv(index : UInt, divisor : UInt) -> Unit {
  epoxy_glVertexAttribDivisorNV(d_glVertexAttribDivisorNV.get(), index, divisor)
}

///|
let d_glVertexAttribFormat : Dispatch = Dispatch::new("glVertexAttribFormat")

///|
extern "c" fn epoxy_glVertexAttribFormat(
  fp : CPtr,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexAttribFormat"

///|
pub fn gl_vertex_attrib_format(
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexAttribFormat(
    d_glVertexAttribFormat.get(),
    attribindex,
    size,
    type_,
    normalized,
    relativeoffset,
  )
}

///|
let d_glVertexAttribFormatNV : Dispatch = Dispatch::new(
  "glVertexAttribFormatNV",
)

///|
extern "c" fn epoxy_glVertexAttribFormatNV(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
) -> Unit = "epoxy_glVertexAttribFormatNV"

///|
pub fn gl_vertex_attrib_format_nv(
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
) -> Unit {
  epoxy_glVertexAttribFormatNV(
    d_glVertexAttribFormatNV.get(),
    index,
    size,
    type_,
    normalized,
    stride,
  )
}

///|
let d_glVertexAttribI1i : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1i",
  ["glVertexAttribI1iEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI1i(fp : CPtr, index : UInt, x : Int) -> Unit = "epoxy_glVertexAttribI1i"

///|
pub fn gl_vertex_attrib_i1i(index : UInt, x : Int) -> Unit {
  epoxy_glVertexAttribI1i(d_glVertexAttribI1i.get(), index, x)
}

///|
let d_glVertexAttribI1iEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1iEXT",
  ["glVertexAttribI1i"],
)

///|
extern "c" fn epoxy_glVertexAttribI1iEXT(
  fp : CPtr,
  index : UInt,
  x : Int,
) -> Unit = "epoxy_glVertexAttribI1iEXT"

///|
pub fn gl_vertex_attrib_i1i_ext(index : UInt, x : Int) -> Unit {
  epoxy_glVertexAttribI1iEXT(d_glVertexAttribI1iEXT.get(), index, x)
}

///|
let d_glVertexAttribI1iv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1iv",
  ["glVertexAttribI1ivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI1iv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI1iv"

///|
pub fn gl_vertex_attrib_i1iv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI1iv(d_glVertexAttribI1iv.get(), index, v)
}

///|
let d_glVertexAttribI1ivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1ivEXT",
  ["glVertexAttribI1iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI1ivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI1ivEXT"

///|
pub fn gl_vertex_attrib_i1iv_ext(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI1ivEXT(d_glVertexAttribI1ivEXT.get(), index, v)
}

///|
let d_glVertexAttribI1ui : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1ui",
  ["glVertexAttribI1uiEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI1ui(
  fp : CPtr,
  index : UInt,
  x : UInt,
) -> Unit = "epoxy_glVertexAttribI1ui"

///|
pub fn gl_vertex_attrib_i1ui(index : UInt, x : UInt) -> Unit {
  epoxy_glVertexAttribI1ui(d_glVertexAttribI1ui.get(), index, x)
}

///|
let d_glVertexAttribI1uiEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1uiEXT",
  ["glVertexAttribI1ui"],
)

///|
extern "c" fn epoxy_glVertexAttribI1uiEXT(
  fp : CPtr,
  index : UInt,
  x : UInt,
) -> Unit = "epoxy_glVertexAttribI1uiEXT"

///|
pub fn gl_vertex_attrib_i1ui_ext(index : UInt, x : UInt) -> Unit {
  epoxy_glVertexAttribI1uiEXT(d_glVertexAttribI1uiEXT.get(), index, x)
}

///|
let d_glVertexAttribI1uiv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1uiv",
  ["glVertexAttribI1uivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI1uiv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI1uiv"

///|
pub fn gl_vertex_attrib_i1uiv(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI1uiv(d_glVertexAttribI1uiv.get(), index, v)
}

///|
let d_glVertexAttribI1uivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI1uivEXT",
  ["glVertexAttribI1uiv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI1uivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI1uivEXT"

///|
pub fn gl_vertex_attrib_i1uiv_ext(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI1uivEXT(d_glVertexAttribI1uivEXT.get(), index, v)
}

///|
let d_glVertexAttribI2i : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2i",
  ["glVertexAttribI2iEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI2i(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexAttribI2i"

///|
pub fn gl_vertex_attrib_i2i(index : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexAttribI2i(d_glVertexAttribI2i.get(), index, x, y)
}

///|
let d_glVertexAttribI2iEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2iEXT",
  ["glVertexAttribI2i"],
)

///|
extern "c" fn epoxy_glVertexAttribI2iEXT(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexAttribI2iEXT"

///|
pub fn gl_vertex_attrib_i2i_ext(index : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexAttribI2iEXT(d_glVertexAttribI2iEXT.get(), index, x, y)
}

///|
let d_glVertexAttribI2iv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2iv",
  ["glVertexAttribI2ivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI2iv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI2iv"

///|
pub fn gl_vertex_attrib_i2iv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI2iv(d_glVertexAttribI2iv.get(), index, v)
}

///|
let d_glVertexAttribI2ivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2ivEXT",
  ["glVertexAttribI2iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI2ivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI2ivEXT"

///|
pub fn gl_vertex_attrib_i2iv_ext(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI2ivEXT(d_glVertexAttribI2ivEXT.get(), index, v)
}

///|
let d_glVertexAttribI2ui : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2ui",
  ["glVertexAttribI2uiEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI2ui(
  fp : CPtr,
  index : UInt,
  x : UInt,
  y : UInt,
) -> Unit = "epoxy_glVertexAttribI2ui"

///|
pub fn gl_vertex_attrib_i2ui(index : UInt, x : UInt, y : UInt) -> Unit {
  epoxy_glVertexAttribI2ui(d_glVertexAttribI2ui.get(), index, x, y)
}

///|
let d_glVertexAttribI2uiEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2uiEXT",
  ["glVertexAttribI2ui"],
)

///|
extern "c" fn epoxy_glVertexAttribI2uiEXT(
  fp : CPtr,
  index : UInt,
  x : UInt,
  y : UInt,
) -> Unit = "epoxy_glVertexAttribI2uiEXT"

///|
pub fn gl_vertex_attrib_i2ui_ext(index : UInt, x : UInt, y : UInt) -> Unit {
  epoxy_glVertexAttribI2uiEXT(d_glVertexAttribI2uiEXT.get(), index, x, y)
}

///|
let d_glVertexAttribI2uiv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2uiv",
  ["glVertexAttribI2uivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI2uiv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI2uiv"

///|
pub fn gl_vertex_attrib_i2uiv(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI2uiv(d_glVertexAttribI2uiv.get(), index, v)
}

///|
let d_glVertexAttribI2uivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI2uivEXT",
  ["glVertexAttribI2uiv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI2uivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI2uivEXT"

///|
pub fn gl_vertex_attrib_i2uiv_ext(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI2uivEXT(d_glVertexAttribI2uivEXT.get(), index, v)
}

///|
let d_glVertexAttribI3i : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3i",
  ["glVertexAttribI3iEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI3i(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexAttribI3i"

///|
pub fn gl_vertex_attrib_i3i(index : UInt, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertexAttribI3i(d_glVertexAttribI3i.get(), index, x, y, z)
}

///|
let d_glVertexAttribI3iEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3iEXT",
  ["glVertexAttribI3i"],
)

///|
extern "c" fn epoxy_glVertexAttribI3iEXT(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexAttribI3iEXT"

///|
pub fn gl_vertex_attrib_i3i_ext(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit {
  epoxy_glVertexAttribI3iEXT(d_glVertexAttribI3iEXT.get(), index, x, y, z)
}

///|
let d_glVertexAttribI3iv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3iv",
  ["glVertexAttribI3ivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI3iv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI3iv"

///|
pub fn gl_vertex_attrib_i3iv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI3iv(d_glVertexAttribI3iv.get(), index, v)
}

///|
let d_glVertexAttribI3ivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3ivEXT",
  ["glVertexAttribI3iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI3ivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI3ivEXT"

///|
pub fn gl_vertex_attrib_i3iv_ext(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI3ivEXT(d_glVertexAttribI3ivEXT.get(), index, v)
}

///|
let d_glVertexAttribI3ui : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3ui",
  ["glVertexAttribI3uiEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI3ui(
  fp : CPtr,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
) -> Unit = "epoxy_glVertexAttribI3ui"

///|
pub fn gl_vertex_attrib_i3ui(
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
) -> Unit {
  epoxy_glVertexAttribI3ui(d_glVertexAttribI3ui.get(), index, x, y, z)
}

///|
let d_glVertexAttribI3uiEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3uiEXT",
  ["glVertexAttribI3ui"],
)

///|
extern "c" fn epoxy_glVertexAttribI3uiEXT(
  fp : CPtr,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
) -> Unit = "epoxy_glVertexAttribI3uiEXT"

///|
pub fn gl_vertex_attrib_i3ui_ext(
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
) -> Unit {
  epoxy_glVertexAttribI3uiEXT(d_glVertexAttribI3uiEXT.get(), index, x, y, z)
}

///|
let d_glVertexAttribI3uiv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3uiv",
  ["glVertexAttribI3uivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI3uiv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI3uiv"

///|
pub fn gl_vertex_attrib_i3uiv(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI3uiv(d_glVertexAttribI3uiv.get(), index, v)
}

///|
let d_glVertexAttribI3uivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI3uivEXT",
  ["glVertexAttribI3uiv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI3uivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI3uivEXT"

///|
pub fn gl_vertex_attrib_i3uiv_ext(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI3uivEXT(d_glVertexAttribI3uivEXT.get(), index, v)
}

///|
let d_glVertexAttribI4bv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4bv",
  ["glVertexAttribI4bvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4bv(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttribI4bv"

///|
pub fn gl_vertex_attrib_i4bv(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttribI4bv(d_glVertexAttribI4bv.get(), index, v)
}

///|
let d_glVertexAttribI4bvEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4bvEXT",
  ["glVertexAttribI4bv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4bvEXT(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttribI4bvEXT"

///|
pub fn gl_vertex_attrib_i4bv_ext(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttribI4bvEXT(d_glVertexAttribI4bvEXT.get(), index, v)
}

///|
let d_glVertexAttribI4i : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4i",
  ["glVertexAttribI4iEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI4i(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttribI4i"

///|
pub fn gl_vertex_attrib_i4i(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttribI4i(d_glVertexAttribI4i.get(), index, x, y, z, w)
}

///|
let d_glVertexAttribI4iEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4iEXT",
  ["glVertexAttribI4i"],
)

///|
extern "c" fn epoxy_glVertexAttribI4iEXT(
  fp : CPtr,
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexAttribI4iEXT"

///|
pub fn gl_vertex_attrib_i4i_ext(
  index : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexAttribI4iEXT(d_glVertexAttribI4iEXT.get(), index, x, y, z, w)
}

///|
let d_glVertexAttribI4iv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4iv",
  ["glVertexAttribI4ivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4iv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI4iv"

///|
pub fn gl_vertex_attrib_i4iv(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI4iv(d_glVertexAttribI4iv.get(), index, v)
}

///|
let d_glVertexAttribI4ivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4ivEXT",
  ["glVertexAttribI4iv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4ivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int],
) -> Unit = "epoxy_glVertexAttribI4ivEXT"

///|
pub fn gl_vertex_attrib_i4iv_ext(index : UInt, v : FixedArray[Int]) -> Unit {
  epoxy_glVertexAttribI4ivEXT(d_glVertexAttribI4ivEXT.get(), index, v)
}

///|
let d_glVertexAttribI4sv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4sv",
  ["glVertexAttribI4svEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4sv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttribI4sv"

///|
pub fn gl_vertex_attrib_i4sv(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttribI4sv(d_glVertexAttribI4sv.get(), index, v)
}

///|
let d_glVertexAttribI4svEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4svEXT",
  ["glVertexAttribI4sv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4svEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttribI4svEXT"

///|
pub fn gl_vertex_attrib_i4sv_ext(index : UInt, v : FixedArray[Int16]) -> Unit {
  epoxy_glVertexAttribI4svEXT(d_glVertexAttribI4svEXT.get(), index, v)
}

///|
let d_glVertexAttribI4ubv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4ubv",
  ["glVertexAttribI4ubvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4ubv(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttribI4ubv"

///|
pub fn gl_vertex_attrib_i4ubv(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttribI4ubv(d_glVertexAttribI4ubv.get(), index, v)
}

///|
let d_glVertexAttribI4ubvEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4ubvEXT",
  ["glVertexAttribI4ubv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4ubvEXT(
  fp : CPtr,
  index : UInt,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttribI4ubvEXT"

///|
pub fn gl_vertex_attrib_i4ubv_ext(index : UInt, v : Bytes) -> Unit {
  epoxy_glVertexAttribI4ubvEXT(d_glVertexAttribI4ubvEXT.get(), index, v)
}

///|
let d_glVertexAttribI4ui : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4ui",
  ["glVertexAttribI4uiEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribI4ui(
  fp : CPtr,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit = "epoxy_glVertexAttribI4ui"

///|
pub fn gl_vertex_attrib_i4ui(
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit {
  epoxy_glVertexAttribI4ui(d_glVertexAttribI4ui.get(), index, x, y, z, w)
}

///|
let d_glVertexAttribI4uiEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4uiEXT",
  ["glVertexAttribI4ui"],
)

///|
extern "c" fn epoxy_glVertexAttribI4uiEXT(
  fp : CPtr,
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit = "epoxy_glVertexAttribI4uiEXT"

///|
pub fn gl_vertex_attrib_i4ui_ext(
  index : UInt,
  x : UInt,
  y : UInt,
  z : UInt,
  w : UInt,
) -> Unit {
  epoxy_glVertexAttribI4uiEXT(d_glVertexAttribI4uiEXT.get(), index, x, y, z, w)
}

///|
let d_glVertexAttribI4uiv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4uiv",
  ["glVertexAttribI4uivEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4uiv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI4uiv"

///|
pub fn gl_vertex_attrib_i4uiv(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI4uiv(d_glVertexAttribI4uiv.get(), index, v)
}

///|
let d_glVertexAttribI4uivEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4uivEXT",
  ["glVertexAttribI4uiv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4uivEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribI4uivEXT"

///|
pub fn gl_vertex_attrib_i4uiv_ext(index : UInt, v : FixedArray[UInt]) -> Unit {
  epoxy_glVertexAttribI4uivEXT(d_glVertexAttribI4uivEXT.get(), index, v)
}

///|
let d_glVertexAttribI4usv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4usv",
  ["glVertexAttribI4usvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4usv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttribI4usv"

///|
pub fn gl_vertex_attrib_i4usv(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttribI4usv(d_glVertexAttribI4usv.get(), index, v)
}

///|
let d_glVertexAttribI4usvEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribI4usvEXT",
  ["glVertexAttribI4usv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribI4usvEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttribI4usvEXT"

///|
pub fn gl_vertex_attrib_i4usv_ext(index : UInt, v : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexAttribI4usvEXT(d_glVertexAttribI4usvEXT.get(), index, v)
}

///|
let d_glVertexAttribIFormat : Dispatch = Dispatch::new("glVertexAttribIFormat")

///|
extern "c" fn epoxy_glVertexAttribIFormat(
  fp : CPtr,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexAttribIFormat"

///|
pub fn gl_vertex_attrib_i_format(
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexAttribIFormat(
    d_glVertexAttribIFormat.get(),
    attribindex,
    size,
    type_,
    relativeoffset,
  )
}

///|
let d_glVertexAttribIFormatNV : Dispatch = Dispatch::new(
  "glVertexAttribIFormatNV",
)

///|
extern "c" fn epoxy_glVertexAttribIFormatNV(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glVertexAttribIFormatNV"

///|
pub fn gl_vertex_attrib_i_format_nv(
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit {
  epoxy_glVertexAttribIFormatNV(
    d_glVertexAttribIFormatNV.get(),
    index,
    size,
    type_,
    stride,
  )
}

///|
let d_glVertexAttribIPointer : Dispatch = Dispatch::with_aliases(
  "glVertexAttribIPointer",
  ["glVertexAttribIPointerEXT"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexAttribIPointer(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexAttribIPointer"

///|
pub fn gl_vertex_attrib_i_pointer(
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexAttribIPointer(
    d_glVertexAttribIPointer.get(),
    index,
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glVertexAttribIPointerEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribIPointerEXT",
  ["glVertexAttribIPointer"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexAttribIPointerEXT(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexAttribIPointerEXT"

///|
pub fn gl_vertex_attrib_i_pointer_ext(
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexAttribIPointerEXT(
    d_glVertexAttribIPointerEXT.get(),
    index,
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glVertexAttribL1d : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL1d",
  ["glVertexAttribL1dEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribL1d(
  fp : CPtr,
  index : UInt,
  x : Double,
) -> Unit = "epoxy_glVertexAttribL1d"

///|
pub fn gl_vertex_attrib_l1d(index : UInt, x : Double) -> Unit {
  epoxy_glVertexAttribL1d(d_glVertexAttribL1d.get(), index, x)
}

///|
let d_glVertexAttribL1dEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL1dEXT",
  ["glVertexAttribL1d"],
)

///|
extern "c" fn epoxy_glVertexAttribL1dEXT(
  fp : CPtr,
  index : UInt,
  x : Double,
) -> Unit = "epoxy_glVertexAttribL1dEXT"

///|
pub fn gl_vertex_attrib_l1d_ext(index : UInt, x : Double) -> Unit {
  epoxy_glVertexAttribL1dEXT(d_glVertexAttribL1dEXT.get(), index, x)
}

///|
let d_glVertexAttribL1dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL1dv",
  ["glVertexAttribL1dvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL1dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL1dv"

///|
pub fn gl_vertex_attrib_l1dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL1dv(d_glVertexAttribL1dv.get(), index, v)
}

///|
let d_glVertexAttribL1dvEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL1dvEXT",
  ["glVertexAttribL1dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL1dvEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL1dvEXT"

///|
pub fn gl_vertex_attrib_l1dv_ext(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL1dvEXT(d_glVertexAttribL1dvEXT.get(), index, v)
}

///|
let d_glVertexAttribL1i64NV : Dispatch = Dispatch::new("glVertexAttribL1i64NV")

///|
extern "c" fn epoxy_glVertexAttribL1i64NV(
  fp : CPtr,
  index : UInt,
  x : Int64,
) -> Unit = "epoxy_glVertexAttribL1i64NV"

///|
pub fn gl_vertex_attrib_l1i64_nv(index : UInt, x : Int64) -> Unit {
  epoxy_glVertexAttribL1i64NV(d_glVertexAttribL1i64NV.get(), index, x)
}

///|
let d_glVertexAttribL1i64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL1i64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL1i64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int64],
) -> Unit = "epoxy_glVertexAttribL1i64vNV"

///|
pub fn gl_vertex_attrib_l1i64v_nv(index : UInt, v : FixedArray[Int64]) -> Unit {
  epoxy_glVertexAttribL1i64vNV(d_glVertexAttribL1i64vNV.get(), index, v)
}

///|
let d_glVertexAttribL1ui64ARB : Dispatch = Dispatch::new(
  "glVertexAttribL1ui64ARB",
)

///|
extern "c" fn epoxy_glVertexAttribL1ui64ARB(
  fp : CPtr,
  index : UInt,
  x : UInt64,
) -> Unit = "epoxy_glVertexAttribL1ui64ARB"

///|
pub fn gl_vertex_attrib_l1ui64_arb(index : UInt, x : UInt64) -> Unit {
  epoxy_glVertexAttribL1ui64ARB(d_glVertexAttribL1ui64ARB.get(), index, x)
}

///|
let d_glVertexAttribL1ui64NV : Dispatch = Dispatch::new(
  "glVertexAttribL1ui64NV",
)

///|
extern "c" fn epoxy_glVertexAttribL1ui64NV(
  fp : CPtr,
  index : UInt,
  x : UInt64,
) -> Unit = "epoxy_glVertexAttribL1ui64NV"

///|
pub fn gl_vertex_attrib_l1ui64_nv(index : UInt, x : UInt64) -> Unit {
  epoxy_glVertexAttribL1ui64NV(d_glVertexAttribL1ui64NV.get(), index, x)
}

///|
let d_glVertexAttribL1ui64vARB : Dispatch = Dispatch::new(
  "glVertexAttribL1ui64vARB",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL1ui64vARB(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit = "epoxy_glVertexAttribL1ui64vARB"

///|
pub fn gl_vertex_attrib_l1ui64v_arb(
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit {
  epoxy_glVertexAttribL1ui64vARB(d_glVertexAttribL1ui64vARB.get(), index, v)
}

///|
let d_glVertexAttribL1ui64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL1ui64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL1ui64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit = "epoxy_glVertexAttribL1ui64vNV"

///|
pub fn gl_vertex_attrib_l1ui64v_nv(
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit {
  epoxy_glVertexAttribL1ui64vNV(d_glVertexAttribL1ui64vNV.get(), index, v)
}

///|
let d_glVertexAttribL2d : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL2d",
  ["glVertexAttribL2dEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribL2d(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glVertexAttribL2d"

///|
pub fn gl_vertex_attrib_l2d(index : UInt, x : Double, y : Double) -> Unit {
  epoxy_glVertexAttribL2d(d_glVertexAttribL2d.get(), index, x, y)
}

///|
let d_glVertexAttribL2dEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL2dEXT",
  ["glVertexAttribL2d"],
)

///|
extern "c" fn epoxy_glVertexAttribL2dEXT(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glVertexAttribL2dEXT"

///|
pub fn gl_vertex_attrib_l2d_ext(index : UInt, x : Double, y : Double) -> Unit {
  epoxy_glVertexAttribL2dEXT(d_glVertexAttribL2dEXT.get(), index, x, y)
}

///|
let d_glVertexAttribL2dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL2dv",
  ["glVertexAttribL2dvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL2dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL2dv"

///|
pub fn gl_vertex_attrib_l2dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL2dv(d_glVertexAttribL2dv.get(), index, v)
}

///|
let d_glVertexAttribL2dvEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL2dvEXT",
  ["glVertexAttribL2dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL2dvEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL2dvEXT"

///|
pub fn gl_vertex_attrib_l2dv_ext(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL2dvEXT(d_glVertexAttribL2dvEXT.get(), index, v)
}

///|
let d_glVertexAttribL2i64NV : Dispatch = Dispatch::new("glVertexAttribL2i64NV")

///|
extern "c" fn epoxy_glVertexAttribL2i64NV(
  fp : CPtr,
  index : UInt,
  x : Int64,
  y : Int64,
) -> Unit = "epoxy_glVertexAttribL2i64NV"

///|
pub fn gl_vertex_attrib_l2i64_nv(index : UInt, x : Int64, y : Int64) -> Unit {
  epoxy_glVertexAttribL2i64NV(d_glVertexAttribL2i64NV.get(), index, x, y)
}

///|
let d_glVertexAttribL2i64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL2i64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL2i64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int64],
) -> Unit = "epoxy_glVertexAttribL2i64vNV"

///|
pub fn gl_vertex_attrib_l2i64v_nv(index : UInt, v : FixedArray[Int64]) -> Unit {
  epoxy_glVertexAttribL2i64vNV(d_glVertexAttribL2i64vNV.get(), index, v)
}

///|
let d_glVertexAttribL2ui64NV : Dispatch = Dispatch::new(
  "glVertexAttribL2ui64NV",
)

///|
extern "c" fn epoxy_glVertexAttribL2ui64NV(
  fp : CPtr,
  index : UInt,
  x : UInt64,
  y : UInt64,
) -> Unit = "epoxy_glVertexAttribL2ui64NV"

///|
pub fn gl_vertex_attrib_l2ui64_nv(index : UInt, x : UInt64, y : UInt64) -> Unit {
  epoxy_glVertexAttribL2ui64NV(d_glVertexAttribL2ui64NV.get(), index, x, y)
}

///|
let d_glVertexAttribL2ui64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL2ui64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL2ui64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit = "epoxy_glVertexAttribL2ui64vNV"

///|
pub fn gl_vertex_attrib_l2ui64v_nv(
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit {
  epoxy_glVertexAttribL2ui64vNV(d_glVertexAttribL2ui64vNV.get(), index, v)
}

///|
let d_glVertexAttribL3d : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL3d",
  ["glVertexAttribL3dEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribL3d(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glVertexAttribL3d"

///|
pub fn gl_vertex_attrib_l3d(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glVertexAttribL3d(d_glVertexAttribL3d.get(), index, x, y, z)
}

///|
let d_glVertexAttribL3dEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL3dEXT",
  ["glVertexAttribL3d"],
)

///|
extern "c" fn epoxy_glVertexAttribL3dEXT(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glVertexAttribL3dEXT"

///|
pub fn gl_vertex_attrib_l3d_ext(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glVertexAttribL3dEXT(d_glVertexAttribL3dEXT.get(), index, x, y, z)
}

///|
let d_glVertexAttribL3dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL3dv",
  ["glVertexAttribL3dvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL3dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL3dv"

///|
pub fn gl_vertex_attrib_l3dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL3dv(d_glVertexAttribL3dv.get(), index, v)
}

///|
let d_glVertexAttribL3dvEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL3dvEXT",
  ["glVertexAttribL3dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL3dvEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL3dvEXT"

///|
pub fn gl_vertex_attrib_l3dv_ext(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL3dvEXT(d_glVertexAttribL3dvEXT.get(), index, v)
}

///|
let d_glVertexAttribL3i64NV : Dispatch = Dispatch::new("glVertexAttribL3i64NV")

///|
extern "c" fn epoxy_glVertexAttribL3i64NV(
  fp : CPtr,
  index : UInt,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit = "epoxy_glVertexAttribL3i64NV"

///|
pub fn gl_vertex_attrib_l3i64_nv(
  index : UInt,
  x : Int64,
  y : Int64,
  z : Int64,
) -> Unit {
  epoxy_glVertexAttribL3i64NV(d_glVertexAttribL3i64NV.get(), index, x, y, z)
}

///|
let d_glVertexAttribL3i64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL3i64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL3i64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int64],
) -> Unit = "epoxy_glVertexAttribL3i64vNV"

///|
pub fn gl_vertex_attrib_l3i64v_nv(index : UInt, v : FixedArray[Int64]) -> Unit {
  epoxy_glVertexAttribL3i64vNV(d_glVertexAttribL3i64vNV.get(), index, v)
}

///|
let d_glVertexAttribL3ui64NV : Dispatch = Dispatch::new(
  "glVertexAttribL3ui64NV",
)

///|
extern "c" fn epoxy_glVertexAttribL3ui64NV(
  fp : CPtr,
  index : UInt,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit = "epoxy_glVertexAttribL3ui64NV"

///|
pub fn gl_vertex_attrib_l3ui64_nv(
  index : UInt,
  x : UInt64,
  y : UInt64,
  z : UInt64,
) -> Unit {
  epoxy_glVertexAttribL3ui64NV(d_glVertexAttribL3ui64NV.get(), index, x, y, z)
}

///|
let d_glVertexAttribL3ui64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL3ui64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL3ui64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit = "epoxy_glVertexAttribL3ui64vNV"

///|
pub fn gl_vertex_attrib_l3ui64v_nv(
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit {
  epoxy_glVertexAttribL3ui64vNV(d_glVertexAttribL3ui64vNV.get(), index, v)
}

///|
let d_glVertexAttribL4d : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL4d",
  ["glVertexAttribL4dEXT"],
)

///|
extern "c" fn epoxy_glVertexAttribL4d(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glVertexAttribL4d"

///|
pub fn gl_vertex_attrib_l4d(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glVertexAttribL4d(d_glVertexAttribL4d.get(), index, x, y, z, w)
}

///|
let d_glVertexAttribL4dEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL4dEXT",
  ["glVertexAttribL4d"],
)

///|
extern "c" fn epoxy_glVertexAttribL4dEXT(
  fp : CPtr,
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glVertexAttribL4dEXT"

///|
pub fn gl_vertex_attrib_l4d_ext(
  index : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glVertexAttribL4dEXT(d_glVertexAttribL4dEXT.get(), index, x, y, z, w)
}

///|
let d_glVertexAttribL4dv : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL4dv",
  ["glVertexAttribL4dvEXT"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL4dv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL4dv"

///|
pub fn gl_vertex_attrib_l4dv(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL4dv(d_glVertexAttribL4dv.get(), index, v)
}

///|
let d_glVertexAttribL4dvEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribL4dvEXT",
  ["glVertexAttribL4dv"],
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL4dvEXT(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribL4dvEXT"

///|
pub fn gl_vertex_attrib_l4dv_ext(index : UInt, v : FixedArray[Double]) -> Unit {
  epoxy_glVertexAttribL4dvEXT(d_glVertexAttribL4dvEXT.get(), index, v)
}

///|
let d_glVertexAttribL4i64NV : Dispatch = Dispatch::new("glVertexAttribL4i64NV")

///|
extern "c" fn epoxy_glVertexAttribL4i64NV(
  fp : CPtr,
  index : UInt,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit = "epoxy_glVertexAttribL4i64NV"

///|
pub fn gl_vertex_attrib_l4i64_nv(
  index : UInt,
  x : Int64,
  y : Int64,
  z : Int64,
  w : Int64,
) -> Unit {
  epoxy_glVertexAttribL4i64NV(d_glVertexAttribL4i64NV.get(), index, x, y, z, w)
}

///|
let d_glVertexAttribL4i64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL4i64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL4i64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Int64],
) -> Unit = "epoxy_glVertexAttribL4i64vNV"

///|
pub fn gl_vertex_attrib_l4i64v_nv(index : UInt, v : FixedArray[Int64]) -> Unit {
  epoxy_glVertexAttribL4i64vNV(d_glVertexAttribL4i64vNV.get(), index, v)
}

///|
let d_glVertexAttribL4ui64NV : Dispatch = Dispatch::new(
  "glVertexAttribL4ui64NV",
)

///|
extern "c" fn epoxy_glVertexAttribL4ui64NV(
  fp : CPtr,
  index : UInt,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit = "epoxy_glVertexAttribL4ui64NV"

///|
pub fn gl_vertex_attrib_l4ui64_nv(
  index : UInt,
  x : UInt64,
  y : UInt64,
  z : UInt64,
  w : UInt64,
) -> Unit {
  epoxy_glVertexAttribL4ui64NV(
    d_glVertexAttribL4ui64NV.get(),
    index,
    x,
    y,
    z,
    w,
  )
}

///|
let d_glVertexAttribL4ui64vNV : Dispatch = Dispatch::new(
  "glVertexAttribL4ui64vNV",
)

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribL4ui64vNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit = "epoxy_glVertexAttribL4ui64vNV"

///|
pub fn gl_vertex_attrib_l4ui64v_nv(
  index : UInt,
  v : FixedArray[UInt64],
) -> Unit {
  epoxy_glVertexAttribL4ui64vNV(d_glVertexAttribL4ui64vNV.get(), index, v)
}

///|
let d_glVertexAttribLFormat : Dispatch = Dispatch::new("glVertexAttribLFormat")

///|
extern "c" fn epoxy_glVertexAttribLFormat(
  fp : CPtr,
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit = "epoxy_glVertexAttribLFormat"

///|
pub fn gl_vertex_attrib_l_format(
  attribindex : UInt,
  size : Int,
  type_ : UInt,
  relativeoffset : UInt,
) -> Unit {
  epoxy_glVertexAttribLFormat(
    d_glVertexAttribLFormat.get(),
    attribindex,
    size,
    type_,
    relativeoffset,
  )
}

///|
let d_glVertexAttribLFormatNV : Dispatch = Dispatch::new(
  "glVertexAttribLFormatNV",
)

///|
extern "c" fn epoxy_glVertexAttribLFormatNV(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glVertexAttribLFormatNV"

///|
pub fn gl_vertex_attrib_l_format_nv(
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit {
  epoxy_glVertexAttribLFormatNV(
    d_glVertexAttribLFormatNV.get(),
    index,
    size,
    type_,
    stride,
  )
}

///|
let d_glVertexAttribLPointer : Dispatch = Dispatch::with_aliases(
  "glVertexAttribLPointer",
  ["glVertexAttribLPointerEXT"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexAttribLPointer(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexAttribLPointer"

///|
pub fn gl_vertex_attrib_l_pointer(
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexAttribLPointer(
    d_glVertexAttribLPointer.get(),
    index,
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glVertexAttribLPointerEXT : Dispatch = Dispatch::with_aliases(
  "glVertexAttribLPointerEXT",
  ["glVertexAttribLPointer"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexAttribLPointerEXT(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexAttribLPointerEXT"

///|
pub fn gl_vertex_attrib_l_pointer_ext(
  index : UInt,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexAttribLPointerEXT(
    d_glVertexAttribLPointerEXT.get(),
    index,
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glVertexAttribP1ui : Dispatch = Dispatch::new("glVertexAttribP1ui")

///|
extern "c" fn epoxy_glVertexAttribP1ui(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit = "epoxy_glVertexAttribP1ui"

///|
pub fn gl_vertex_attrib_p1ui(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit {
  epoxy_glVertexAttribP1ui(
    d_glVertexAttribP1ui.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribP1uiv : Dispatch = Dispatch::new("glVertexAttribP1uiv")

///|
#borrow(value)
extern "c" fn epoxy_glVertexAttribP1uiv(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribP1uiv"

///|
pub fn gl_vertex_attrib_p1uiv(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glVertexAttribP1uiv(
    d_glVertexAttribP1uiv.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribP2ui : Dispatch = Dispatch::new("glVertexAttribP2ui")

///|
extern "c" fn epoxy_glVertexAttribP2ui(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit = "epoxy_glVertexAttribP2ui"

///|
pub fn gl_vertex_attrib_p2ui(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit {
  epoxy_glVertexAttribP2ui(
    d_glVertexAttribP2ui.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribP2uiv : Dispatch = Dispatch::new("glVertexAttribP2uiv")

///|
#borrow(value)
extern "c" fn epoxy_glVertexAttribP2uiv(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribP2uiv"

///|
pub fn gl_vertex_attrib_p2uiv(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glVertexAttribP2uiv(
    d_glVertexAttribP2uiv.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribP3ui : Dispatch = Dispatch::new("glVertexAttribP3ui")

///|
extern "c" fn epoxy_glVertexAttribP3ui(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit = "epoxy_glVertexAttribP3ui"

///|
pub fn gl_vertex_attrib_p3ui(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit {
  epoxy_glVertexAttribP3ui(
    d_glVertexAttribP3ui.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribP3uiv : Dispatch = Dispatch::new("glVertexAttribP3uiv")

///|
#borrow(value)
extern "c" fn epoxy_glVertexAttribP3uiv(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribP3uiv"

///|
pub fn gl_vertex_attrib_p3uiv(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glVertexAttribP3uiv(
    d_glVertexAttribP3uiv.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribP4ui : Dispatch = Dispatch::new("glVertexAttribP4ui")

///|
extern "c" fn epoxy_glVertexAttribP4ui(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit = "epoxy_glVertexAttribP4ui"

///|
pub fn gl_vertex_attrib_p4ui(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : UInt,
) -> Unit {
  epoxy_glVertexAttribP4ui(
    d_glVertexAttribP4ui.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribP4uiv : Dispatch = Dispatch::new("glVertexAttribP4uiv")

///|
#borrow(value)
extern "c" fn epoxy_glVertexAttribP4uiv(
  fp : CPtr,
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glVertexAttribP4uiv"

///|
pub fn gl_vertex_attrib_p4uiv(
  index : UInt,
  type_ : UInt,
  normalized : Bool,
  value : FixedArray[UInt],
) -> Unit {
  epoxy_glVertexAttribP4uiv(
    d_glVertexAttribP4uiv.get(),
    index,
    type_,
    normalized,
    value,
  )
}

///|
let d_glVertexAttribParameteriAMD : Dispatch = Dispatch::new(
  "glVertexAttribParameteriAMD",
)

///|
extern "c" fn epoxy_glVertexAttribParameteriAMD(
  fp : CPtr,
  index : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glVertexAttribParameteriAMD"

///|
pub fn gl_vertex_attrib_parameteri_amd(
  index : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glVertexAttribParameteriAMD(
    d_glVertexAttribParameteriAMD.get(),
    index,
    pname,
    param,
  )
}

///|
let d_glVertexAttribPointer : Dispatch = Dispatch::with_aliases(
  "glVertexAttribPointer",
  ["glVertexAttribPointerARB"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexAttribPointer(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexAttribPointer"

///|
pub fn gl_vertex_attrib_pointer(
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexAttribPointer(
    d_glVertexAttribPointer.get(),
    index,
    size,
    type_,
    normalized,
    stride,
    pointer,
  )
}

///|
let d_glVertexAttribPointerARB : Dispatch = Dispatch::with_aliases(
  "glVertexAttribPointerARB",
  ["glVertexAttribPointer"],
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexAttribPointerARB(
  fp : CPtr,
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexAttribPointerARB"

///|
pub fn gl_vertex_attrib_pointer_arb(
  index : UInt,
  size : Int,
  type_ : UInt,
  normalized : Bool,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexAttribPointerARB(
    d_glVertexAttribPointerARB.get(),
    index,
    size,
    type_,
    normalized,
    stride,
    pointer,
  )
}

///|
let d_glVertexAttribPointerNV : Dispatch = Dispatch::new(
  "glVertexAttribPointerNV",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexAttribPointerNV(
  fp : CPtr,
  index : UInt,
  fsize : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexAttribPointerNV"

///|
pub fn gl_vertex_attrib_pointer_nv(
  index : UInt,
  fsize : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexAttribPointerNV(
    d_glVertexAttribPointerNV.get(),
    index,
    fsize,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glVertexAttribs1dvNV : Dispatch = Dispatch::new("glVertexAttribs1dvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs1dvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribs1dvNV"

///|
pub fn gl_vertex_attribs1dv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glVertexAttribs1dvNV(d_glVertexAttribs1dvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs1fvNV : Dispatch = Dispatch::new("glVertexAttribs1fvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs1fvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttribs1fvNV"

///|
pub fn gl_vertex_attribs1fv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glVertexAttribs1fvNV(d_glVertexAttribs1fvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs1hvNV : Dispatch = Dispatch::new("glVertexAttribs1hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs1hvNV(
  fp : CPtr,
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttribs1hvNV"

///|
pub fn gl_vertex_attribs1hv_nv(
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit {
  epoxy_glVertexAttribs1hvNV(d_glVertexAttribs1hvNV.get(), index, n, v)
}

///|
let d_glVertexAttribs1svNV : Dispatch = Dispatch::new("glVertexAttribs1svNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs1svNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttribs1svNV"

///|
pub fn gl_vertex_attribs1sv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexAttribs1svNV(d_glVertexAttribs1svNV.get(), index, count, v)
}

///|
let d_glVertexAttribs2dvNV : Dispatch = Dispatch::new("glVertexAttribs2dvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs2dvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribs2dvNV"

///|
pub fn gl_vertex_attribs2dv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glVertexAttribs2dvNV(d_glVertexAttribs2dvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs2fvNV : Dispatch = Dispatch::new("glVertexAttribs2fvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs2fvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttribs2fvNV"

///|
pub fn gl_vertex_attribs2fv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glVertexAttribs2fvNV(d_glVertexAttribs2fvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs2hvNV : Dispatch = Dispatch::new("glVertexAttribs2hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs2hvNV(
  fp : CPtr,
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttribs2hvNV"

///|
pub fn gl_vertex_attribs2hv_nv(
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit {
  epoxy_glVertexAttribs2hvNV(d_glVertexAttribs2hvNV.get(), index, n, v)
}

///|
let d_glVertexAttribs2svNV : Dispatch = Dispatch::new("glVertexAttribs2svNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs2svNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttribs2svNV"

///|
pub fn gl_vertex_attribs2sv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexAttribs2svNV(d_glVertexAttribs2svNV.get(), index, count, v)
}

///|
let d_glVertexAttribs3dvNV : Dispatch = Dispatch::new("glVertexAttribs3dvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs3dvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribs3dvNV"

///|
pub fn gl_vertex_attribs3dv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glVertexAttribs3dvNV(d_glVertexAttribs3dvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs3fvNV : Dispatch = Dispatch::new("glVertexAttribs3fvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs3fvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttribs3fvNV"

///|
pub fn gl_vertex_attribs3fv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glVertexAttribs3fvNV(d_glVertexAttribs3fvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs3hvNV : Dispatch = Dispatch::new("glVertexAttribs3hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs3hvNV(
  fp : CPtr,
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttribs3hvNV"

///|
pub fn gl_vertex_attribs3hv_nv(
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit {
  epoxy_glVertexAttribs3hvNV(d_glVertexAttribs3hvNV.get(), index, n, v)
}

///|
let d_glVertexAttribs3svNV : Dispatch = Dispatch::new("glVertexAttribs3svNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs3svNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttribs3svNV"

///|
pub fn gl_vertex_attribs3sv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexAttribs3svNV(d_glVertexAttribs3svNV.get(), index, count, v)
}

///|
let d_glVertexAttribs4dvNV : Dispatch = Dispatch::new("glVertexAttribs4dvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs4dvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit = "epoxy_glVertexAttribs4dvNV"

///|
pub fn gl_vertex_attribs4dv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Double],
) -> Unit {
  epoxy_glVertexAttribs4dvNV(d_glVertexAttribs4dvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs4fvNV : Dispatch = Dispatch::new("glVertexAttribs4fvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs4fvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glVertexAttribs4fvNV"

///|
pub fn gl_vertex_attribs4fv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glVertexAttribs4fvNV(d_glVertexAttribs4fvNV.get(), index, count, v)
}

///|
let d_glVertexAttribs4hvNV : Dispatch = Dispatch::new("glVertexAttribs4hvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs4hvNV(
  fp : CPtr,
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexAttribs4hvNV"

///|
pub fn gl_vertex_attribs4hv_nv(
  index : UInt,
  n : Int,
  v : FixedArray[UInt16],
) -> Unit {
  epoxy_glVertexAttribs4hvNV(d_glVertexAttribs4hvNV.get(), index, n, v)
}

///|
let d_glVertexAttribs4svNV : Dispatch = Dispatch::new("glVertexAttribs4svNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs4svNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glVertexAttribs4svNV"

///|
pub fn gl_vertex_attribs4sv_nv(
  index : UInt,
  count : Int,
  v : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexAttribs4svNV(d_glVertexAttribs4svNV.get(), index, count, v)
}

///|
let d_glVertexAttribs4ubvNV : Dispatch = Dispatch::new("glVertexAttribs4ubvNV")

///|
#borrow(v)
extern "c" fn epoxy_glVertexAttribs4ubvNV(
  fp : CPtr,
  index : UInt,
  count : Int,
  v : Bytes,
) -> Unit = "epoxy_glVertexAttribs4ubvNV"

///|
pub fn gl_vertex_attribs4ubv_nv(index : UInt, count : Int, v : Bytes) -> Unit {
  epoxy_glVertexAttribs4ubvNV(d_glVertexAttribs4ubvNV.get(), index, count, v)
}

///|
let d_glVertexBindingDivisor : Dispatch = Dispatch::new(
  "glVertexBindingDivisor",
)

///|
extern "c" fn epoxy_glVertexBindingDivisor(
  fp : CPtr,
  bindingindex : UInt,
  divisor : UInt,
) -> Unit = "epoxy_glVertexBindingDivisor"

///|
pub fn gl_vertex_binding_divisor(bindingindex : UInt, divisor : UInt) -> Unit {
  epoxy_glVertexBindingDivisor(
    d_glVertexBindingDivisor.get(),
    bindingindex,
    divisor,
  )
}

///|
let d_glVertexBlendARB : Dispatch = Dispatch::new("glVertexBlendARB")

///|
extern "c" fn epoxy_glVertexBlendARB(fp : CPtr, count : Int) -> Unit = "epoxy_glVertexBlendARB"

///|
pub fn gl_vertex_blend_arb(count : Int) -> Unit {
  epoxy_glVertexBlendARB(d_glVertexBlendARB.get(), count)
}

///|
let d_glVertexBlendEnvfATI : Dispatch = Dispatch::new("glVertexBlendEnvfATI")

///|
extern "c" fn epoxy_glVertexBlendEnvfATI(
  fp : CPtr,
  pname : UInt,
  param : Float,
) -> Unit = "epoxy_glVertexBlendEnvfATI"

///|
pub fn gl_vertex_blend_envf_ati(pname : UInt, param : Float) -> Unit {
  epoxy_glVertexBlendEnvfATI(d_glVertexBlendEnvfATI.get(), pname, param)
}

///|
let d_glVertexBlendEnviATI : Dispatch = Dispatch::new("glVertexBlendEnviATI")

///|
extern "c" fn epoxy_glVertexBlendEnviATI(
  fp : CPtr,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glVertexBlendEnviATI"

///|
pub fn gl_vertex_blend_envi_ati(pname : UInt, param : Int) -> Unit {
  epoxy_glVertexBlendEnviATI(d_glVertexBlendEnviATI.get(), pname, param)
}

///|
let d_glVertexFormatNV : Dispatch = Dispatch::new("glVertexFormatNV")

///|
extern "c" fn epoxy_glVertexFormatNV(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
) -> Unit = "epoxy_glVertexFormatNV"

///|
pub fn gl_vertex_format_nv(size : Int, type_ : UInt, stride : Int) -> Unit {
  epoxy_glVertexFormatNV(d_glVertexFormatNV.get(), size, type_, stride)
}

///|
let d_glVertexP2ui : Dispatch = Dispatch::new("glVertexP2ui")

///|
extern "c" fn epoxy_glVertexP2ui(fp : CPtr, type_ : UInt, value : UInt) -> Unit = "epoxy_glVertexP2ui"

///|
pub fn gl_vertex_p2ui(type_ : UInt, value : UInt) -> Unit {
  epoxy_glVertexP2ui(d_glVertexP2ui.get(), type_, value)
}

///|
let d_glVertexP2uiv : Dispatch = Dispatch::new("glVertexP2uiv")

///|
#borrow(value)
extern "c" fn epoxy_glVertexP2uiv(
  fp : CPtr,
  type_ : UInt,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glVertexP2uiv"

///|
pub fn gl_vertex_p2uiv(type_ : UInt, value : FixedArray[UInt]) -> Unit {
  epoxy_glVertexP2uiv(d_glVertexP2uiv.get(), type_, value)
}

///|
let d_glVertexP3ui : Dispatch = Dispatch::new("glVertexP3ui")

///|
extern "c" fn epoxy_glVertexP3ui(fp : CPtr, type_ : UInt, value : UInt) -> Unit = "epoxy_glVertexP3ui"

///|
pub fn gl_vertex_p3ui(type_ : UInt, value : UInt) -> Unit {
  epoxy_glVertexP3ui(d_glVertexP3ui.get(), type_, value)
}

///|
let d_glVertexP3uiv : Dispatch = Dispatch::new("glVertexP3uiv")

///|
#borrow(value)
extern "c" fn epoxy_glVertexP3uiv(
  fp : CPtr,
  type_ : UInt,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glVertexP3uiv"

///|
pub fn gl_vertex_p3uiv(type_ : UInt, value : FixedArray[UInt]) -> Unit {
  epoxy_glVertexP3uiv(d_glVertexP3uiv.get(), type_, value)
}

///|
let d_glVertexP4ui : Dispatch = Dispatch::new("glVertexP4ui")

///|
extern "c" fn epoxy_glVertexP4ui(fp : CPtr, type_ : UInt, value : UInt) -> Unit = "epoxy_glVertexP4ui"

///|
pub fn gl_vertex_p4ui(type_ : UInt, value : UInt) -> Unit {
  epoxy_glVertexP4ui(d_glVertexP4ui.get(), type_, value)
}

///|
let d_glVertexP4uiv : Dispatch = Dispatch::new("glVertexP4uiv")

///|
#borrow(value)
extern "c" fn epoxy_glVertexP4uiv(
  fp : CPtr,
  type_ : UInt,
  value : FixedArray[UInt],
) -> Unit = "epoxy_glVertexP4uiv"

///|
pub fn gl_vertex_p4uiv(type_ : UInt, value : FixedArray[UInt]) -> Unit {
  epoxy_glVertexP4uiv(d_glVertexP4uiv.get(), type_, value)
}

///|
let d_glVertexPointer : Dispatch = Dispatch::new("glVertexPointer")

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexPointer(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexPointer"

///|
pub fn gl_vertex_pointer(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexPointer(d_glVertexPointer.get(), size, type_, stride, pointer)
}

///|
let d_glVertexPointerEXT : Dispatch = Dispatch::new("glVertexPointerEXT")

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexPointerEXT(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexPointerEXT"

///|
pub fn gl_vertex_pointer_ext(
  size : Int,
  type_ : UInt,
  stride : Int,
  count : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexPointerEXT(
    d_glVertexPointerEXT.get(),
    size,
    type_,
    stride,
    count,
    pointer,
  )
}

///|
let d_glVertexStream1dATI : Dispatch = Dispatch::new("glVertexStream1dATI")

///|
extern "c" fn epoxy_glVertexStream1dATI(
  fp : CPtr,
  stream : UInt,
  x : Double,
) -> Unit = "epoxy_glVertexStream1dATI"

///|
pub fn gl_vertex_stream1d_ati(stream : UInt, x : Double) -> Unit {
  epoxy_glVertexStream1dATI(d_glVertexStream1dATI.get(), stream, x)
}

///|
let d_glVertexStream1dvATI : Dispatch = Dispatch::new("glVertexStream1dvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream1dvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit = "epoxy_glVertexStream1dvATI"

///|
pub fn gl_vertex_stream1dv_ati(
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit {
  epoxy_glVertexStream1dvATI(d_glVertexStream1dvATI.get(), stream, coords)
}

///|
let d_glVertexStream1fATI : Dispatch = Dispatch::new("glVertexStream1fATI")

///|
extern "c" fn epoxy_glVertexStream1fATI(
  fp : CPtr,
  stream : UInt,
  x : Float,
) -> Unit = "epoxy_glVertexStream1fATI"

///|
pub fn gl_vertex_stream1f_ati(stream : UInt, x : Float) -> Unit {
  epoxy_glVertexStream1fATI(d_glVertexStream1fATI.get(), stream, x)
}

///|
let d_glVertexStream1fvATI : Dispatch = Dispatch::new("glVertexStream1fvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream1fvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit = "epoxy_glVertexStream1fvATI"

///|
pub fn gl_vertex_stream1fv_ati(
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit {
  epoxy_glVertexStream1fvATI(d_glVertexStream1fvATI.get(), stream, coords)
}

///|
let d_glVertexStream1iATI : Dispatch = Dispatch::new("glVertexStream1iATI")

///|
extern "c" fn epoxy_glVertexStream1iATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
) -> Unit = "epoxy_glVertexStream1iATI"

///|
pub fn gl_vertex_stream1i_ati(stream : UInt, x : Int) -> Unit {
  epoxy_glVertexStream1iATI(d_glVertexStream1iATI.get(), stream, x)
}

///|
let d_glVertexStream1ivATI : Dispatch = Dispatch::new("glVertexStream1ivATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream1ivATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glVertexStream1ivATI"

///|
pub fn gl_vertex_stream1iv_ati(stream : UInt, coords : FixedArray[Int]) -> Unit {
  epoxy_glVertexStream1ivATI(d_glVertexStream1ivATI.get(), stream, coords)
}

///|
let d_glVertexStream1sATI : Dispatch = Dispatch::new("glVertexStream1sATI")

///|
extern "c" fn epoxy_glVertexStream1sATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
) -> Unit = "epoxy_glVertexStream1sATI"

///|
pub fn gl_vertex_stream1s_ati(stream : UInt, x : Int) -> Unit {
  epoxy_glVertexStream1sATI(d_glVertexStream1sATI.get(), stream, x)
}

///|
let d_glVertexStream1svATI : Dispatch = Dispatch::new("glVertexStream1svATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream1svATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit = "epoxy_glVertexStream1svATI"

///|
pub fn gl_vertex_stream1sv_ati(
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexStream1svATI(d_glVertexStream1svATI.get(), stream, coords)
}

///|
let d_glVertexStream2dATI : Dispatch = Dispatch::new("glVertexStream2dATI")

///|
extern "c" fn epoxy_glVertexStream2dATI(
  fp : CPtr,
  stream : UInt,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glVertexStream2dATI"

///|
pub fn gl_vertex_stream2d_ati(stream : UInt, x : Double, y : Double) -> Unit {
  epoxy_glVertexStream2dATI(d_glVertexStream2dATI.get(), stream, x, y)
}

///|
let d_glVertexStream2dvATI : Dispatch = Dispatch::new("glVertexStream2dvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream2dvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit = "epoxy_glVertexStream2dvATI"

///|
pub fn gl_vertex_stream2dv_ati(
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit {
  epoxy_glVertexStream2dvATI(d_glVertexStream2dvATI.get(), stream, coords)
}

///|
let d_glVertexStream2fATI : Dispatch = Dispatch::new("glVertexStream2fATI")

///|
extern "c" fn epoxy_glVertexStream2fATI(
  fp : CPtr,
  stream : UInt,
  x : Float,
  y : Float,
) -> Unit = "epoxy_glVertexStream2fATI"

///|
pub fn gl_vertex_stream2f_ati(stream : UInt, x : Float, y : Float) -> Unit {
  epoxy_glVertexStream2fATI(d_glVertexStream2fATI.get(), stream, x, y)
}

///|
let d_glVertexStream2fvATI : Dispatch = Dispatch::new("glVertexStream2fvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream2fvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit = "epoxy_glVertexStream2fvATI"

///|
pub fn gl_vertex_stream2fv_ati(
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit {
  epoxy_glVertexStream2fvATI(d_glVertexStream2fvATI.get(), stream, coords)
}

///|
let d_glVertexStream2iATI : Dispatch = Dispatch::new("glVertexStream2iATI")

///|
extern "c" fn epoxy_glVertexStream2iATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexStream2iATI"

///|
pub fn gl_vertex_stream2i_ati(stream : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexStream2iATI(d_glVertexStream2iATI.get(), stream, x, y)
}

///|
let d_glVertexStream2ivATI : Dispatch = Dispatch::new("glVertexStream2ivATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream2ivATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glVertexStream2ivATI"

///|
pub fn gl_vertex_stream2iv_ati(stream : UInt, coords : FixedArray[Int]) -> Unit {
  epoxy_glVertexStream2ivATI(d_glVertexStream2ivATI.get(), stream, coords)
}

///|
let d_glVertexStream2sATI : Dispatch = Dispatch::new("glVertexStream2sATI")

///|
extern "c" fn epoxy_glVertexStream2sATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
  y : Int,
) -> Unit = "epoxy_glVertexStream2sATI"

///|
pub fn gl_vertex_stream2s_ati(stream : UInt, x : Int, y : Int) -> Unit {
  epoxy_glVertexStream2sATI(d_glVertexStream2sATI.get(), stream, x, y)
}

///|
let d_glVertexStream2svATI : Dispatch = Dispatch::new("glVertexStream2svATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream2svATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit = "epoxy_glVertexStream2svATI"

///|
pub fn gl_vertex_stream2sv_ati(
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexStream2svATI(d_glVertexStream2svATI.get(), stream, coords)
}

///|
let d_glVertexStream3dATI : Dispatch = Dispatch::new("glVertexStream3dATI")

///|
extern "c" fn epoxy_glVertexStream3dATI(
  fp : CPtr,
  stream : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glVertexStream3dATI"

///|
pub fn gl_vertex_stream3d_ati(
  stream : UInt,
  x : Double,
  y : Double,
  z : Double,
) -> Unit {
  epoxy_glVertexStream3dATI(d_glVertexStream3dATI.get(), stream, x, y, z)
}

///|
let d_glVertexStream3dvATI : Dispatch = Dispatch::new("glVertexStream3dvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream3dvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit = "epoxy_glVertexStream3dvATI"

///|
pub fn gl_vertex_stream3dv_ati(
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit {
  epoxy_glVertexStream3dvATI(d_glVertexStream3dvATI.get(), stream, coords)
}

///|
let d_glVertexStream3fATI : Dispatch = Dispatch::new("glVertexStream3fATI")

///|
extern "c" fn epoxy_glVertexStream3fATI(
  fp : CPtr,
  stream : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glVertexStream3fATI"

///|
pub fn gl_vertex_stream3f_ati(
  stream : UInt,
  x : Float,
  y : Float,
  z : Float,
) -> Unit {
  epoxy_glVertexStream3fATI(d_glVertexStream3fATI.get(), stream, x, y, z)
}

///|
let d_glVertexStream3fvATI : Dispatch = Dispatch::new("glVertexStream3fvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream3fvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit = "epoxy_glVertexStream3fvATI"

///|
pub fn gl_vertex_stream3fv_ati(
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit {
  epoxy_glVertexStream3fvATI(d_glVertexStream3fvATI.get(), stream, coords)
}

///|
let d_glVertexStream3iATI : Dispatch = Dispatch::new("glVertexStream3iATI")

///|
extern "c" fn epoxy_glVertexStream3iATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexStream3iATI"

///|
pub fn gl_vertex_stream3i_ati(stream : UInt, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertexStream3iATI(d_glVertexStream3iATI.get(), stream, x, y, z)
}

///|
let d_glVertexStream3ivATI : Dispatch = Dispatch::new("glVertexStream3ivATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream3ivATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glVertexStream3ivATI"

///|
pub fn gl_vertex_stream3iv_ati(stream : UInt, coords : FixedArray[Int]) -> Unit {
  epoxy_glVertexStream3ivATI(d_glVertexStream3ivATI.get(), stream, coords)
}

///|
let d_glVertexStream3sATI : Dispatch = Dispatch::new("glVertexStream3sATI")

///|
extern "c" fn epoxy_glVertexStream3sATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glVertexStream3sATI"

///|
pub fn gl_vertex_stream3s_ati(stream : UInt, x : Int, y : Int, z : Int) -> Unit {
  epoxy_glVertexStream3sATI(d_glVertexStream3sATI.get(), stream, x, y, z)
}

///|
let d_glVertexStream3svATI : Dispatch = Dispatch::new("glVertexStream3svATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream3svATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit = "epoxy_glVertexStream3svATI"

///|
pub fn gl_vertex_stream3sv_ati(
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexStream3svATI(d_glVertexStream3svATI.get(), stream, coords)
}

///|
let d_glVertexStream4dATI : Dispatch = Dispatch::new("glVertexStream4dATI")

///|
extern "c" fn epoxy_glVertexStream4dATI(
  fp : CPtr,
  stream : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glVertexStream4dATI"

///|
pub fn gl_vertex_stream4d_ati(
  stream : UInt,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glVertexStream4dATI(d_glVertexStream4dATI.get(), stream, x, y, z, w)
}

///|
let d_glVertexStream4dvATI : Dispatch = Dispatch::new("glVertexStream4dvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream4dvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit = "epoxy_glVertexStream4dvATI"

///|
pub fn gl_vertex_stream4dv_ati(
  stream : UInt,
  coords : FixedArray[Double],
) -> Unit {
  epoxy_glVertexStream4dvATI(d_glVertexStream4dvATI.get(), stream, coords)
}

///|
let d_glVertexStream4fATI : Dispatch = Dispatch::new("glVertexStream4fATI")

///|
extern "c" fn epoxy_glVertexStream4fATI(
  fp : CPtr,
  stream : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glVertexStream4fATI"

///|
pub fn gl_vertex_stream4f_ati(
  stream : UInt,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit {
  epoxy_glVertexStream4fATI(d_glVertexStream4fATI.get(), stream, x, y, z, w)
}

///|
let d_glVertexStream4fvATI : Dispatch = Dispatch::new("glVertexStream4fvATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream4fvATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit = "epoxy_glVertexStream4fvATI"

///|
pub fn gl_vertex_stream4fv_ati(
  stream : UInt,
  coords : FixedArray[Float],
) -> Unit {
  epoxy_glVertexStream4fvATI(d_glVertexStream4fvATI.get(), stream, coords)
}

///|
let d_glVertexStream4iATI : Dispatch = Dispatch::new("glVertexStream4iATI")

///|
extern "c" fn epoxy_glVertexStream4iATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexStream4iATI"

///|
pub fn gl_vertex_stream4i_ati(
  stream : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexStream4iATI(d_glVertexStream4iATI.get(), stream, x, y, z, w)
}

///|
let d_glVertexStream4ivATI : Dispatch = Dispatch::new("glVertexStream4ivATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream4ivATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int],
) -> Unit = "epoxy_glVertexStream4ivATI"

///|
pub fn gl_vertex_stream4iv_ati(stream : UInt, coords : FixedArray[Int]) -> Unit {
  epoxy_glVertexStream4ivATI(d_glVertexStream4ivATI.get(), stream, coords)
}

///|
let d_glVertexStream4sATI : Dispatch = Dispatch::new("glVertexStream4sATI")

///|
extern "c" fn epoxy_glVertexStream4sATI(
  fp : CPtr,
  stream : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glVertexStream4sATI"

///|
pub fn gl_vertex_stream4s_ati(
  stream : UInt,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit {
  epoxy_glVertexStream4sATI(d_glVertexStream4sATI.get(), stream, x, y, z, w)
}

///|
let d_glVertexStream4svATI : Dispatch = Dispatch::new("glVertexStream4svATI")

///|
#borrow(coords)
extern "c" fn epoxy_glVertexStream4svATI(
  fp : CPtr,
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit = "epoxy_glVertexStream4svATI"

///|
pub fn gl_vertex_stream4sv_ati(
  stream : UInt,
  coords : FixedArray[Int16],
) -> Unit {
  epoxy_glVertexStream4svATI(d_glVertexStream4svATI.get(), stream, coords)
}

///|
let d_glVertexWeightPointerEXT : Dispatch = Dispatch::new(
  "glVertexWeightPointerEXT",
)

///|
#borrow(pointer)
extern "c" fn epoxy_glVertexWeightPointerEXT(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glVertexWeightPointerEXT"

///|
pub fn gl_vertex_weight_pointer_ext(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glVertexWeightPointerEXT(
    d_glVertexWeightPointerEXT.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glVertexWeightfEXT : Dispatch = Dispatch::new("glVertexWeightfEXT")

///|
extern "c" fn epoxy_glVertexWeightfEXT(fp : CPtr, weight : Float) -> Unit = "epoxy_glVertexWeightfEXT"

///|
pub fn gl_vertex_weightf_ext(weight : Float) -> Unit {
  epoxy_glVertexWeightfEXT(d_glVertexWeightfEXT.get(), weight)
}

///|
let d_glVertexWeightfvEXT : Dispatch = Dispatch::new("glVertexWeightfvEXT")

///|
#borrow(weight)
extern "c" fn epoxy_glVertexWeightfvEXT(
  fp : CPtr,
  weight : FixedArray[Float],
) -> Unit = "epoxy_glVertexWeightfvEXT"

///|
pub fn gl_vertex_weightfv_ext(weight : FixedArray[Float]) -> Unit {
  epoxy_glVertexWeightfvEXT(d_glVertexWeightfvEXT.get(), weight)
}

///|
let d_glVertexWeighthNV : Dispatch = Dispatch::new("glVertexWeighthNV")

///|
extern "c" fn epoxy_glVertexWeighthNV(fp : CPtr, weight : Int) -> Unit = "epoxy_glVertexWeighthNV"

///|
pub fn gl_vertex_weighth_nv(weight : Int) -> Unit {
  epoxy_glVertexWeighthNV(d_glVertexWeighthNV.get(), weight)
}

///|
let d_glVertexWeighthvNV : Dispatch = Dispatch::new("glVertexWeighthvNV")

///|
#borrow(weight)
extern "c" fn epoxy_glVertexWeighthvNV(
  fp : CPtr,
  weight : FixedArray[UInt16],
) -> Unit = "epoxy_glVertexWeighthvNV"

///|
pub fn gl_vertex_weighthv_nv(weight : FixedArray[UInt16]) -> Unit {
  epoxy_glVertexWeighthvNV(d_glVertexWeighthvNV.get(), weight)
}

///|
let d_glVideoCaptureNV : Dispatch = Dispatch::new("glVideoCaptureNV")

///|
#borrow(sequence_num, capture_time)
extern "c" fn epoxy_glVideoCaptureNV(
  fp : CPtr,
  video_capture_slot : UInt,
  sequence_num : FixedArray[UInt],
  capture_time : FixedArray[UInt64],
) -> UInt = "epoxy_glVideoCaptureNV"

///|
pub fn gl_video_capture_nv(
  video_capture_slot : UInt,
  sequence_num : FixedArray[UInt],
  capture_time : FixedArray[UInt64],
) -> UInt {
  epoxy_glVideoCaptureNV(
    d_glVideoCaptureNV.get(),
    video_capture_slot,
    sequence_num,
    capture_time,
  )
}

///|
let d_glVideoCaptureStreamParameterdvNV : Dispatch = Dispatch::new(
  "glVideoCaptureStreamParameterdvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glVideoCaptureStreamParameterdvNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit = "epoxy_glVideoCaptureStreamParameterdvNV"

///|
pub fn gl_video_capture_stream_parameterdv_nv(
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Double],
) -> Unit {
  epoxy_glVideoCaptureStreamParameterdvNV(
    d_glVideoCaptureStreamParameterdvNV.get(),
    video_capture_slot,
    stream,
    pname,
    params,
  )
}

///|
let d_glVideoCaptureStreamParameterfvNV : Dispatch = Dispatch::new(
  "glVideoCaptureStreamParameterfvNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glVideoCaptureStreamParameterfvNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit = "epoxy_glVideoCaptureStreamParameterfvNV"

///|
pub fn gl_video_capture_stream_parameterfv_nv(
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Float],
) -> Unit {
  epoxy_glVideoCaptureStreamParameterfvNV(
    d_glVideoCaptureStreamParameterfvNV.get(),
    video_capture_slot,
    stream,
    pname,
    params,
  )
}

///|
let d_glVideoCaptureStreamParameterivNV : Dispatch = Dispatch::new(
  "glVideoCaptureStreamParameterivNV",
)

///|
#borrow(params)
extern "c" fn epoxy_glVideoCaptureStreamParameterivNV(
  fp : CPtr,
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glVideoCaptureStreamParameterivNV"

///|
pub fn gl_video_capture_stream_parameteriv_nv(
  video_capture_slot : UInt,
  stream : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glVideoCaptureStreamParameterivNV(
    d_glVideoCaptureStreamParameterivNV.get(),
    video_capture_slot,
    stream,
    pname,
    params,
  )
}

///|
let d_glViewport : Dispatch = Dispatch::new("glViewport")

///|
extern "c" fn epoxy_glViewport(
  fp : CPtr,
  x : Int,
  y : Int,
  width : Int,
  height : Int,
) -> Unit = "epoxy_glViewport"

///|
pub fn gl_viewport(x : Int, y : Int, width : Int, height : Int) -> Unit {
  epoxy_glViewport(d_glViewport.get(), x, y, width, height)
}

///|
let d_glViewportArrayv : Dispatch = Dispatch::with_aliases("glViewportArrayv", [
  "glViewportArrayvNV", "glViewportArrayvOES",
])

///|
#borrow(v)
extern "c" fn epoxy_glViewportArrayv(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glViewportArrayv"

///|
pub fn gl_viewport_arrayv(
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glViewportArrayv(d_glViewportArrayv.get(), first, count, v)
}

///|
let d_glViewportArrayvNV : Dispatch = Dispatch::with_aliases(
  "glViewportArrayvNV",
  ["glViewportArrayv", "glViewportArrayvOES"],
)

///|
#borrow(v)
extern "c" fn epoxy_glViewportArrayvNV(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glViewportArrayvNV"

///|
pub fn gl_viewport_arrayv_nv(
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glViewportArrayvNV(d_glViewportArrayvNV.get(), first, count, v)
}

///|
let d_glViewportArrayvOES : Dispatch = Dispatch::with_aliases(
  "glViewportArrayvOES",
  ["glViewportArrayv", "glViewportArrayvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glViewportArrayvOES(
  fp : CPtr,
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit = "epoxy_glViewportArrayvOES"

///|
pub fn gl_viewport_arrayv_oes(
  first : UInt,
  count : Int,
  v : FixedArray[Float],
) -> Unit {
  epoxy_glViewportArrayvOES(d_glViewportArrayvOES.get(), first, count, v)
}

///|
let d_glViewportIndexedf : Dispatch = Dispatch::with_aliases(
  "glViewportIndexedf",
  ["glViewportIndexedfNV", "glViewportIndexedfOES"],
)

///|
extern "c" fn epoxy_glViewportIndexedf(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  w : Float,
  h : Float,
) -> Unit = "epoxy_glViewportIndexedf"

///|
pub fn gl_viewport_indexedf(
  index : UInt,
  x : Float,
  y : Float,
  w : Float,
  h : Float,
) -> Unit {
  epoxy_glViewportIndexedf(d_glViewportIndexedf.get(), index, x, y, w, h)
}

///|
let d_glViewportIndexedfOES : Dispatch = Dispatch::with_aliases(
  "glViewportIndexedfOES",
  ["glViewportIndexedf", "glViewportIndexedfNV"],
)

///|
extern "c" fn epoxy_glViewportIndexedfOES(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  w : Float,
  h : Float,
) -> Unit = "epoxy_glViewportIndexedfOES"

///|
pub fn gl_viewport_indexedf_oes(
  index : UInt,
  x : Float,
  y : Float,
  w : Float,
  h : Float,
) -> Unit {
  epoxy_glViewportIndexedfOES(d_glViewportIndexedfOES.get(), index, x, y, w, h)
}

///|
let d_glViewportIndexedfNV : Dispatch = Dispatch::with_aliases(
  "glViewportIndexedfNV",
  ["glViewportIndexedf", "glViewportIndexedfOES"],
)

///|
extern "c" fn epoxy_glViewportIndexedfNV(
  fp : CPtr,
  index : UInt,
  x : Float,
  y : Float,
  w : Float,
  h : Float,
) -> Unit = "epoxy_glViewportIndexedfNV"

///|
pub fn gl_viewport_indexedf_nv(
  index : UInt,
  x : Float,
  y : Float,
  w : Float,
  h : Float,
) -> Unit {
  epoxy_glViewportIndexedfNV(d_glViewportIndexedfNV.get(), index, x, y, w, h)
}

///|
let d_glViewportIndexedfv : Dispatch = Dispatch::with_aliases(
  "glViewportIndexedfv",
  ["glViewportIndexedfvNV", "glViewportIndexedfvOES"],
)

///|
#borrow(v)
extern "c" fn epoxy_glViewportIndexedfv(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glViewportIndexedfv"

///|
pub fn gl_viewport_indexedfv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glViewportIndexedfv(d_glViewportIndexedfv.get(), index, v)
}

///|
let d_glViewportIndexedfvOES : Dispatch = Dispatch::with_aliases(
  "glViewportIndexedfvOES",
  ["glViewportIndexedfv", "glViewportIndexedfvNV"],
)

///|
#borrow(v)
extern "c" fn epoxy_glViewportIndexedfvOES(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glViewportIndexedfvOES"

///|
pub fn gl_viewport_indexedfv_oes(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glViewportIndexedfvOES(d_glViewportIndexedfvOES.get(), index, v)
}

///|
let d_glViewportIndexedfvNV : Dispatch = Dispatch::with_aliases(
  "glViewportIndexedfvNV",
  ["glViewportIndexedfv", "glViewportIndexedfvOES"],
)

///|
#borrow(v)
extern "c" fn epoxy_glViewportIndexedfvNV(
  fp : CPtr,
  index : UInt,
  v : FixedArray[Float],
) -> Unit = "epoxy_glViewportIndexedfvNV"

///|
pub fn gl_viewport_indexedfv_nv(index : UInt, v : FixedArray[Float]) -> Unit {
  epoxy_glViewportIndexedfvNV(d_glViewportIndexedfvNV.get(), index, v)
}

///|
let d_glViewportPositionWScaleNV : Dispatch = Dispatch::new(
  "glViewportPositionWScaleNV",
)

///|
extern "c" fn epoxy_glViewportPositionWScaleNV(
  fp : CPtr,
  index : UInt,
  xcoeff : Float,
  ycoeff : Float,
) -> Unit = "epoxy_glViewportPositionWScaleNV"

///|
pub fn gl_viewport_position_w_scale_nv(
  index : UInt,
  xcoeff : Float,
  ycoeff : Float,
) -> Unit {
  epoxy_glViewportPositionWScaleNV(
    d_glViewportPositionWScaleNV.get(),
    index,
    xcoeff,
    ycoeff,
  )
}

///|
let d_glViewportSwizzleNV : Dispatch = Dispatch::new("glViewportSwizzleNV")

///|
extern "c" fn epoxy_glViewportSwizzleNV(
  fp : CPtr,
  index : UInt,
  swizzlex : UInt,
  swizzley : UInt,
  swizzlez : UInt,
  swizzlew : UInt,
) -> Unit = "epoxy_glViewportSwizzleNV"

///|
pub fn gl_viewport_swizzle_nv(
  index : UInt,
  swizzlex : UInt,
  swizzley : UInt,
  swizzlez : UInt,
  swizzlew : UInt,
) -> Unit {
  epoxy_glViewportSwizzleNV(
    d_glViewportSwizzleNV.get(),
    index,
    swizzlex,
    swizzley,
    swizzlez,
    swizzlew,
  )
}

///|
let d_glWaitSemaphoreEXT : Dispatch = Dispatch::new("glWaitSemaphoreEXT")

///|
#borrow(buffers, textures, srcLayouts)
extern "c" fn epoxy_glWaitSemaphoreEXT(
  fp : CPtr,
  semaphore : UInt,
  numBufferBarriers : UInt,
  buffers : FixedArray[UInt],
  numTextureBarriers : UInt,
  textures : FixedArray[UInt],
  srcLayouts : FixedArray[UInt],
) -> Unit = "epoxy_glWaitSemaphoreEXT"

///|
pub fn gl_wait_semaphore_ext(
  semaphore : UInt,
  numBufferBarriers : UInt,
  buffers : FixedArray[UInt],
  numTextureBarriers : UInt,
  textures : FixedArray[UInt],
  srcLayouts : FixedArray[UInt],
) -> Unit {
  epoxy_glWaitSemaphoreEXT(
    d_glWaitSemaphoreEXT.get(),
    semaphore,
    numBufferBarriers,
    buffers,
    numTextureBarriers,
    textures,
    srcLayouts,
  )
}

///|
let d_glWaitSemaphoreui64NVX : Dispatch = Dispatch::new(
  "glWaitSemaphoreui64NVX",
)

///|
#borrow(semaphoreArray, fenceValueArray)
extern "c" fn epoxy_glWaitSemaphoreui64NVX(
  fp : CPtr,
  waitGpu : UInt,
  fenceObjectCount : Int,
  semaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
) -> Unit = "epoxy_glWaitSemaphoreui64NVX"

///|
pub fn gl_wait_semaphoreui64_nvx(
  waitGpu : UInt,
  fenceObjectCount : Int,
  semaphoreArray : FixedArray[UInt],
  fenceValueArray : FixedArray[UInt64],
) -> Unit {
  epoxy_glWaitSemaphoreui64NVX(
    d_glWaitSemaphoreui64NVX.get(),
    waitGpu,
    fenceObjectCount,
    semaphoreArray,
    fenceValueArray,
  )
}

///|
let d_glWaitSync : Dispatch = Dispatch::with_aliases("glWaitSync", [
  "glWaitSyncAPPLE",
])

///|
extern "c" fn epoxy_glWaitSync(
  fp : CPtr,
  sync : GLsync,
  flags : UInt,
  timeout : UInt64,
) -> Unit = "epoxy_glWaitSync"

///|
pub fn gl_wait_sync(sync : GLsync, flags : UInt, timeout : UInt64) -> Unit {
  epoxy_glWaitSync(d_glWaitSync.get(), sync, flags, timeout)
}

///|
let d_glWaitSyncAPPLE : Dispatch = Dispatch::with_aliases("glWaitSyncAPPLE", [
  "glWaitSync",
])

///|
extern "c" fn epoxy_glWaitSyncAPPLE(
  fp : CPtr,
  sync : GLsync,
  flags : UInt,
  timeout : UInt64,
) -> Unit = "epoxy_glWaitSyncAPPLE"

///|
pub fn gl_wait_sync_apple(
  sync : GLsync,
  flags : UInt,
  timeout : UInt64,
) -> Unit {
  epoxy_glWaitSyncAPPLE(d_glWaitSyncAPPLE.get(), sync, flags, timeout)
}

///|
let d_glWeightPathsNV : Dispatch = Dispatch::new("glWeightPathsNV")

///|
#borrow(paths, weights)
extern "c" fn epoxy_glWeightPathsNV(
  fp : CPtr,
  resultPath : UInt,
  numPaths : Int,
  paths : FixedArray[UInt],
  weights : FixedArray[Float],
) -> Unit = "epoxy_glWeightPathsNV"

///|
pub fn gl_weight_paths_nv(
  resultPath : UInt,
  numPaths : Int,
  paths : FixedArray[UInt],
  weights : FixedArray[Float],
) -> Unit {
  epoxy_glWeightPathsNV(
    d_glWeightPathsNV.get(),
    resultPath,
    numPaths,
    paths,
    weights,
  )
}

///|
let d_glWeightPointerARB : Dispatch = Dispatch::new("glWeightPointerARB")

///|
#borrow(pointer)
extern "c" fn epoxy_glWeightPointerARB(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glWeightPointerARB"

///|
pub fn gl_weight_pointer_arb(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glWeightPointerARB(
    d_glWeightPointerARB.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glWeightPointerOES : Dispatch = Dispatch::new("glWeightPointerOES")

///|
#borrow(pointer)
extern "c" fn epoxy_glWeightPointerOES(
  fp : CPtr,
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit = "epoxy_glWeightPointerOES"

///|
pub fn gl_weight_pointer_oes(
  size : Int,
  type_ : UInt,
  stride : Int,
  pointer : Bytes,
) -> Unit {
  epoxy_glWeightPointerOES(
    d_glWeightPointerOES.get(),
    size,
    type_,
    stride,
    pointer,
  )
}

///|
let d_glWeightbvARB : Dispatch = Dispatch::new("glWeightbvARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightbvARB(
  fp : CPtr,
  size : Int,
  weights : Bytes,
) -> Unit = "epoxy_glWeightbvARB"

///|
pub fn gl_weightbv_arb(size : Int, weights : Bytes) -> Unit {
  epoxy_glWeightbvARB(d_glWeightbvARB.get(), size, weights)
}

///|
let d_glWeightdvARB : Dispatch = Dispatch::new("glWeightdvARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightdvARB(
  fp : CPtr,
  size : Int,
  weights : FixedArray[Double],
) -> Unit = "epoxy_glWeightdvARB"

///|
pub fn gl_weightdv_arb(size : Int, weights : FixedArray[Double]) -> Unit {
  epoxy_glWeightdvARB(d_glWeightdvARB.get(), size, weights)
}

///|
let d_glWeightfvARB : Dispatch = Dispatch::new("glWeightfvARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightfvARB(
  fp : CPtr,
  size : Int,
  weights : FixedArray[Float],
) -> Unit = "epoxy_glWeightfvARB"

///|
pub fn gl_weightfv_arb(size : Int, weights : FixedArray[Float]) -> Unit {
  epoxy_glWeightfvARB(d_glWeightfvARB.get(), size, weights)
}

///|
let d_glWeightivARB : Dispatch = Dispatch::new("glWeightivARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightivARB(
  fp : CPtr,
  size : Int,
  weights : FixedArray[Int],
) -> Unit = "epoxy_glWeightivARB"

///|
pub fn gl_weightiv_arb(size : Int, weights : FixedArray[Int]) -> Unit {
  epoxy_glWeightivARB(d_glWeightivARB.get(), size, weights)
}

///|
let d_glWeightsvARB : Dispatch = Dispatch::new("glWeightsvARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightsvARB(
  fp : CPtr,
  size : Int,
  weights : FixedArray[Int16],
) -> Unit = "epoxy_glWeightsvARB"

///|
pub fn gl_weightsv_arb(size : Int, weights : FixedArray[Int16]) -> Unit {
  epoxy_glWeightsvARB(d_glWeightsvARB.get(), size, weights)
}

///|
let d_glWeightubvARB : Dispatch = Dispatch::new("glWeightubvARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightubvARB(
  fp : CPtr,
  size : Int,
  weights : Bytes,
) -> Unit = "epoxy_glWeightubvARB"

///|
pub fn gl_weightubv_arb(size : Int, weights : Bytes) -> Unit {
  epoxy_glWeightubvARB(d_glWeightubvARB.get(), size, weights)
}

///|
let d_glWeightuivARB : Dispatch = Dispatch::new("glWeightuivARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightuivARB(
  fp : CPtr,
  size : Int,
  weights : FixedArray[UInt],
) -> Unit = "epoxy_glWeightuivARB"

///|
pub fn gl_weightuiv_arb(size : Int, weights : FixedArray[UInt]) -> Unit {
  epoxy_glWeightuivARB(d_glWeightuivARB.get(), size, weights)
}

///|
let d_glWeightusvARB : Dispatch = Dispatch::new("glWeightusvARB")

///|
#borrow(weights)
extern "c" fn epoxy_glWeightusvARB(
  fp : CPtr,
  size : Int,
  weights : FixedArray[UInt16],
) -> Unit = "epoxy_glWeightusvARB"

///|
pub fn gl_weightusv_arb(size : Int, weights : FixedArray[UInt16]) -> Unit {
  epoxy_glWeightusvARB(d_glWeightusvARB.get(), size, weights)
}

///|
let d_glWindowPos2d : Dispatch = Dispatch::with_aliases("glWindowPos2d", [
  "glWindowPos2dARB", "glWindowPos2dMESA",
])

///|
extern "c" fn epoxy_glWindowPos2d(fp : CPtr, x : Double, y : Double) -> Unit = "epoxy_glWindowPos2d"

///|
pub fn gl_window_pos2d(x : Double, y : Double) -> Unit {
  epoxy_glWindowPos2d(d_glWindowPos2d.get(), x, y)
}

///|
let d_glWindowPos2dARB : Dispatch = Dispatch::with_aliases("glWindowPos2dARB", [
  "glWindowPos2d", "glWindowPos2dMESA",
])

///|
extern "c" fn epoxy_glWindowPos2dARB(fp : CPtr, x : Double, y : Double) -> Unit = "epoxy_glWindowPos2dARB"

///|
pub fn gl_window_pos2d_arb(x : Double, y : Double) -> Unit {
  epoxy_glWindowPos2dARB(d_glWindowPos2dARB.get(), x, y)
}

///|
let d_glWindowPos2dMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2dMESA",
  ["glWindowPos2d", "glWindowPos2dARB"],
)

///|
extern "c" fn epoxy_glWindowPos2dMESA(
  fp : CPtr,
  x : Double,
  y : Double,
) -> Unit = "epoxy_glWindowPos2dMESA"

///|
pub fn gl_window_pos2d_mesa(x : Double, y : Double) -> Unit {
  epoxy_glWindowPos2dMESA(d_glWindowPos2dMESA.get(), x, y)
}

///|
let d_glWindowPos2dv : Dispatch = Dispatch::with_aliases("glWindowPos2dv", [
  "glWindowPos2dvARB", "glWindowPos2dvMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glWindowPos2dv"

///|
pub fn gl_window_pos2dv(v : FixedArray[Double]) -> Unit {
  epoxy_glWindowPos2dv(d_glWindowPos2dv.get(), v)
}

///|
let d_glWindowPos2dvARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos2dvARB",
  ["glWindowPos2dv", "glWindowPos2dvMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2dvARB(
  fp : CPtr,
  v : FixedArray[Double],
) -> Unit = "epoxy_glWindowPos2dvARB"

///|
pub fn gl_window_pos2dv_arb(v : FixedArray[Double]) -> Unit {
  epoxy_glWindowPos2dvARB(d_glWindowPos2dvARB.get(), v)
}

///|
let d_glWindowPos2dvMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2dvMESA",
  ["glWindowPos2dv", "glWindowPos2dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2dvMESA(
  fp : CPtr,
  v : FixedArray[Double],
) -> Unit = "epoxy_glWindowPos2dvMESA"

///|
pub fn gl_window_pos2dv_mesa(v : FixedArray[Double]) -> Unit {
  epoxy_glWindowPos2dvMESA(d_glWindowPos2dvMESA.get(), v)
}

///|
let d_glWindowPos2f : Dispatch = Dispatch::with_aliases("glWindowPos2f", [
  "glWindowPos2fARB", "glWindowPos2fMESA",
])

///|
extern "c" fn epoxy_glWindowPos2f(fp : CPtr, x : Float, y : Float) -> Unit = "epoxy_glWindowPos2f"

///|
pub fn gl_window_pos2f(x : Float, y : Float) -> Unit {
  epoxy_glWindowPos2f(d_glWindowPos2f.get(), x, y)
}

///|
let d_glWindowPos2fARB : Dispatch = Dispatch::with_aliases("glWindowPos2fARB", [
  "glWindowPos2f", "glWindowPos2fMESA",
])

///|
extern "c" fn epoxy_glWindowPos2fARB(fp : CPtr, x : Float, y : Float) -> Unit = "epoxy_glWindowPos2fARB"

///|
pub fn gl_window_pos2f_arb(x : Float, y : Float) -> Unit {
  epoxy_glWindowPos2fARB(d_glWindowPos2fARB.get(), x, y)
}

///|
let d_glWindowPos2fMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2fMESA",
  ["glWindowPos2f", "glWindowPos2fARB"],
)

///|
extern "c" fn epoxy_glWindowPos2fMESA(fp : CPtr, x : Float, y : Float) -> Unit = "epoxy_glWindowPos2fMESA"

///|
pub fn gl_window_pos2f_mesa(x : Float, y : Float) -> Unit {
  epoxy_glWindowPos2fMESA(d_glWindowPos2fMESA.get(), x, y)
}

///|
let d_glWindowPos2fv : Dispatch = Dispatch::with_aliases("glWindowPos2fv", [
  "glWindowPos2fvARB", "glWindowPos2fvMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glWindowPos2fv"

///|
pub fn gl_window_pos2fv(v : FixedArray[Float]) -> Unit {
  epoxy_glWindowPos2fv(d_glWindowPos2fv.get(), v)
}

///|
let d_glWindowPos2fvARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos2fvARB",
  ["glWindowPos2fv", "glWindowPos2fvMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2fvARB(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glWindowPos2fvARB"

///|
pub fn gl_window_pos2fv_arb(v : FixedArray[Float]) -> Unit {
  epoxy_glWindowPos2fvARB(d_glWindowPos2fvARB.get(), v)
}

///|
let d_glWindowPos2fvMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2fvMESA",
  ["glWindowPos2fv", "glWindowPos2fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2fvMESA(
  fp : CPtr,
  v : FixedArray[Float],
) -> Unit = "epoxy_glWindowPos2fvMESA"

///|
pub fn gl_window_pos2fv_mesa(v : FixedArray[Float]) -> Unit {
  epoxy_glWindowPos2fvMESA(d_glWindowPos2fvMESA.get(), v)
}

///|
let d_glWindowPos2i : Dispatch = Dispatch::with_aliases("glWindowPos2i", [
  "glWindowPos2iARB", "glWindowPos2iMESA",
])

///|
extern "c" fn epoxy_glWindowPos2i(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glWindowPos2i"

///|
pub fn gl_window_pos2i(x : Int, y : Int) -> Unit {
  epoxy_glWindowPos2i(d_glWindowPos2i.get(), x, y)
}

///|
let d_glWindowPos2iARB : Dispatch = Dispatch::with_aliases("glWindowPos2iARB", [
  "glWindowPos2i", "glWindowPos2iMESA",
])

///|
extern "c" fn epoxy_glWindowPos2iARB(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glWindowPos2iARB"

///|
pub fn gl_window_pos2i_arb(x : Int, y : Int) -> Unit {
  epoxy_glWindowPos2iARB(d_glWindowPos2iARB.get(), x, y)
}

///|
let d_glWindowPos2iMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2iMESA",
  ["glWindowPos2i", "glWindowPos2iARB"],
)

///|
extern "c" fn epoxy_glWindowPos2iMESA(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glWindowPos2iMESA"

///|
pub fn gl_window_pos2i_mesa(x : Int, y : Int) -> Unit {
  epoxy_glWindowPos2iMESA(d_glWindowPos2iMESA.get(), x, y)
}

///|
let d_glWindowPos2iv : Dispatch = Dispatch::with_aliases("glWindowPos2iv", [
  "glWindowPos2ivARB", "glWindowPos2ivMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glWindowPos2iv"

///|
pub fn gl_window_pos2iv(v : FixedArray[Int]) -> Unit {
  epoxy_glWindowPos2iv(d_glWindowPos2iv.get(), v)
}

///|
let d_glWindowPos2ivARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos2ivARB",
  ["glWindowPos2iv", "glWindowPos2ivMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2ivARB(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glWindowPos2ivARB"

///|
pub fn gl_window_pos2iv_arb(v : FixedArray[Int]) -> Unit {
  epoxy_glWindowPos2ivARB(d_glWindowPos2ivARB.get(), v)
}

///|
let d_glWindowPos2ivMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2ivMESA",
  ["glWindowPos2iv", "glWindowPos2ivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2ivMESA(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glWindowPos2ivMESA"

///|
pub fn gl_window_pos2iv_mesa(v : FixedArray[Int]) -> Unit {
  epoxy_glWindowPos2ivMESA(d_glWindowPos2ivMESA.get(), v)
}

///|
let d_glWindowPos2s : Dispatch = Dispatch::with_aliases("glWindowPos2s", [
  "glWindowPos2sARB", "glWindowPos2sMESA",
])

///|
extern "c" fn epoxy_glWindowPos2s(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glWindowPos2s"

///|
pub fn gl_window_pos2s(x : Int, y : Int) -> Unit {
  epoxy_glWindowPos2s(d_glWindowPos2s.get(), x, y)
}

///|
let d_glWindowPos2sARB : Dispatch = Dispatch::with_aliases("glWindowPos2sARB", [
  "glWindowPos2s", "glWindowPos2sMESA",
])

///|
extern "c" fn epoxy_glWindowPos2sARB(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glWindowPos2sARB"

///|
pub fn gl_window_pos2s_arb(x : Int, y : Int) -> Unit {
  epoxy_glWindowPos2sARB(d_glWindowPos2sARB.get(), x, y)
}

///|
let d_glWindowPos2sMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2sMESA",
  ["glWindowPos2s", "glWindowPos2sARB"],
)

///|
extern "c" fn epoxy_glWindowPos2sMESA(fp : CPtr, x : Int, y : Int) -> Unit = "epoxy_glWindowPos2sMESA"

///|
pub fn gl_window_pos2s_mesa(x : Int, y : Int) -> Unit {
  epoxy_glWindowPos2sMESA(d_glWindowPos2sMESA.get(), x, y)
}

///|
let d_glWindowPos2sv : Dispatch = Dispatch::with_aliases("glWindowPos2sv", [
  "glWindowPos2svARB", "glWindowPos2svMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glWindowPos2sv"

///|
pub fn gl_window_pos2sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glWindowPos2sv(d_glWindowPos2sv.get(), v)
}

///|
let d_glWindowPos2svARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos2svARB",
  ["glWindowPos2sv", "glWindowPos2svMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2svARB(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glWindowPos2svARB"

///|
pub fn gl_window_pos2sv_arb(v : FixedArray[Int16]) -> Unit {
  epoxy_glWindowPos2svARB(d_glWindowPos2svARB.get(), v)
}

///|
let d_glWindowPos2svMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos2svMESA",
  ["glWindowPos2sv", "glWindowPos2svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos2svMESA(
  fp : CPtr,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glWindowPos2svMESA"

///|
pub fn gl_window_pos2sv_mesa(v : FixedArray[Int16]) -> Unit {
  epoxy_glWindowPos2svMESA(d_glWindowPos2svMESA.get(), v)
}

///|
let d_glWindowPos3d : Dispatch = Dispatch::with_aliases("glWindowPos3d", [
  "glWindowPos3dARB", "glWindowPos3dMESA",
])

///|
extern "c" fn epoxy_glWindowPos3d(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glWindowPos3d"

///|
pub fn gl_window_pos3d(x : Double, y : Double, z : Double) -> Unit {
  epoxy_glWindowPos3d(d_glWindowPos3d.get(), x, y, z)
}

///|
let d_glWindowPos3dARB : Dispatch = Dispatch::with_aliases("glWindowPos3dARB", [
  "glWindowPos3d", "glWindowPos3dMESA",
])

///|
extern "c" fn epoxy_glWindowPos3dARB(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glWindowPos3dARB"

///|
pub fn gl_window_pos3d_arb(x : Double, y : Double, z : Double) -> Unit {
  epoxy_glWindowPos3dARB(d_glWindowPos3dARB.get(), x, y, z)
}

///|
let d_glWindowPos3dMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3dMESA",
  ["glWindowPos3d", "glWindowPos3dARB"],
)

///|
extern "c" fn epoxy_glWindowPos3dMESA(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
) -> Unit = "epoxy_glWindowPos3dMESA"

///|
pub fn gl_window_pos3d_mesa(x : Double, y : Double, z : Double) -> Unit {
  epoxy_glWindowPos3dMESA(d_glWindowPos3dMESA.get(), x, y, z)
}

///|
let d_glWindowPos3dv : Dispatch = Dispatch::with_aliases("glWindowPos3dv", [
  "glWindowPos3dvARB", "glWindowPos3dvMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3dv(fp : CPtr, v : FixedArray[Double]) -> Unit = "epoxy_glWindowPos3dv"

///|
pub fn gl_window_pos3dv(v : FixedArray[Double]) -> Unit {
  epoxy_glWindowPos3dv(d_glWindowPos3dv.get(), v)
}

///|
let d_glWindowPos3dvARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos3dvARB",
  ["glWindowPos3dv", "glWindowPos3dvMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3dvARB(
  fp : CPtr,
  v : FixedArray[Double],
) -> Unit = "epoxy_glWindowPos3dvARB"

///|
pub fn gl_window_pos3dv_arb(v : FixedArray[Double]) -> Unit {
  epoxy_glWindowPos3dvARB(d_glWindowPos3dvARB.get(), v)
}

///|
let d_glWindowPos3dvMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3dvMESA",
  ["glWindowPos3dv", "glWindowPos3dvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3dvMESA(
  fp : CPtr,
  v : FixedArray[Double],
) -> Unit = "epoxy_glWindowPos3dvMESA"

///|
pub fn gl_window_pos3dv_mesa(v : FixedArray[Double]) -> Unit {
  epoxy_glWindowPos3dvMESA(d_glWindowPos3dvMESA.get(), v)
}

///|
let d_glWindowPos3f : Dispatch = Dispatch::with_aliases("glWindowPos3f", [
  "glWindowPos3fARB", "glWindowPos3fMESA",
])

///|
extern "c" fn epoxy_glWindowPos3f(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glWindowPos3f"

///|
pub fn gl_window_pos3f(x : Float, y : Float, z : Float) -> Unit {
  epoxy_glWindowPos3f(d_glWindowPos3f.get(), x, y, z)
}

///|
let d_glWindowPos3fARB : Dispatch = Dispatch::with_aliases("glWindowPos3fARB", [
  "glWindowPos3f", "glWindowPos3fMESA",
])

///|
extern "c" fn epoxy_glWindowPos3fARB(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glWindowPos3fARB"

///|
pub fn gl_window_pos3f_arb(x : Float, y : Float, z : Float) -> Unit {
  epoxy_glWindowPos3fARB(d_glWindowPos3fARB.get(), x, y, z)
}

///|
let d_glWindowPos3fMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3fMESA",
  ["glWindowPos3f", "glWindowPos3fARB"],
)

///|
extern "c" fn epoxy_glWindowPos3fMESA(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
) -> Unit = "epoxy_glWindowPos3fMESA"

///|
pub fn gl_window_pos3f_mesa(x : Float, y : Float, z : Float) -> Unit {
  epoxy_glWindowPos3fMESA(d_glWindowPos3fMESA.get(), x, y, z)
}

///|
let d_glWindowPos3fv : Dispatch = Dispatch::with_aliases("glWindowPos3fv", [
  "glWindowPos3fvARB", "glWindowPos3fvMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3fv(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glWindowPos3fv"

///|
pub fn gl_window_pos3fv(v : FixedArray[Float]) -> Unit {
  epoxy_glWindowPos3fv(d_glWindowPos3fv.get(), v)
}

///|
let d_glWindowPos3fvARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos3fvARB",
  ["glWindowPos3fv", "glWindowPos3fvMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3fvARB(fp : CPtr, v : FixedArray[Float]) -> Unit = "epoxy_glWindowPos3fvARB"

///|
pub fn gl_window_pos3fv_arb(v : FixedArray[Float]) -> Unit {
  epoxy_glWindowPos3fvARB(d_glWindowPos3fvARB.get(), v)
}

///|
let d_glWindowPos3fvMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3fvMESA",
  ["glWindowPos3fv", "glWindowPos3fvARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3fvMESA(
  fp : CPtr,
  v : FixedArray[Float],
) -> Unit = "epoxy_glWindowPos3fvMESA"

///|
pub fn gl_window_pos3fv_mesa(v : FixedArray[Float]) -> Unit {
  epoxy_glWindowPos3fvMESA(d_glWindowPos3fvMESA.get(), v)
}

///|
let d_glWindowPos3i : Dispatch = Dispatch::with_aliases("glWindowPos3i", [
  "glWindowPos3iARB", "glWindowPos3iMESA",
])

///|
extern "c" fn epoxy_glWindowPos3i(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glWindowPos3i"

///|
pub fn gl_window_pos3i(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glWindowPos3i(d_glWindowPos3i.get(), x, y, z)
}

///|
let d_glWindowPos3iARB : Dispatch = Dispatch::with_aliases("glWindowPos3iARB", [
  "glWindowPos3i", "glWindowPos3iMESA",
])

///|
extern "c" fn epoxy_glWindowPos3iARB(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glWindowPos3iARB"

///|
pub fn gl_window_pos3i_arb(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glWindowPos3iARB(d_glWindowPos3iARB.get(), x, y, z)
}

///|
let d_glWindowPos3iMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3iMESA",
  ["glWindowPos3i", "glWindowPos3iARB"],
)

///|
extern "c" fn epoxy_glWindowPos3iMESA(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glWindowPos3iMESA"

///|
pub fn gl_window_pos3i_mesa(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glWindowPos3iMESA(d_glWindowPos3iMESA.get(), x, y, z)
}

///|
let d_glWindowPos3iv : Dispatch = Dispatch::with_aliases("glWindowPos3iv", [
  "glWindowPos3ivARB", "glWindowPos3ivMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3iv(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glWindowPos3iv"

///|
pub fn gl_window_pos3iv(v : FixedArray[Int]) -> Unit {
  epoxy_glWindowPos3iv(d_glWindowPos3iv.get(), v)
}

///|
let d_glWindowPos3ivARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos3ivARB",
  ["glWindowPos3iv", "glWindowPos3ivMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3ivARB(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glWindowPos3ivARB"

///|
pub fn gl_window_pos3iv_arb(v : FixedArray[Int]) -> Unit {
  epoxy_glWindowPos3ivARB(d_glWindowPos3ivARB.get(), v)
}

///|
let d_glWindowPos3ivMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3ivMESA",
  ["glWindowPos3iv", "glWindowPos3ivARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3ivMESA(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glWindowPos3ivMESA"

///|
pub fn gl_window_pos3iv_mesa(v : FixedArray[Int]) -> Unit {
  epoxy_glWindowPos3ivMESA(d_glWindowPos3ivMESA.get(), v)
}

///|
let d_glWindowPos3s : Dispatch = Dispatch::with_aliases("glWindowPos3s", [
  "glWindowPos3sARB", "glWindowPos3sMESA",
])

///|
extern "c" fn epoxy_glWindowPos3s(fp : CPtr, x : Int, y : Int, z : Int) -> Unit = "epoxy_glWindowPos3s"

///|
pub fn gl_window_pos3s(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glWindowPos3s(d_glWindowPos3s.get(), x, y, z)
}

///|
let d_glWindowPos3sARB : Dispatch = Dispatch::with_aliases("glWindowPos3sARB", [
  "glWindowPos3s", "glWindowPos3sMESA",
])

///|
extern "c" fn epoxy_glWindowPos3sARB(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glWindowPos3sARB"

///|
pub fn gl_window_pos3s_arb(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glWindowPos3sARB(d_glWindowPos3sARB.get(), x, y, z)
}

///|
let d_glWindowPos3sMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3sMESA",
  ["glWindowPos3s", "glWindowPos3sARB"],
)

///|
extern "c" fn epoxy_glWindowPos3sMESA(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
) -> Unit = "epoxy_glWindowPos3sMESA"

///|
pub fn gl_window_pos3s_mesa(x : Int, y : Int, z : Int) -> Unit {
  epoxy_glWindowPos3sMESA(d_glWindowPos3sMESA.get(), x, y, z)
}

///|
let d_glWindowPos3sv : Dispatch = Dispatch::with_aliases("glWindowPos3sv", [
  "glWindowPos3svARB", "glWindowPos3svMESA",
])

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3sv(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glWindowPos3sv"

///|
pub fn gl_window_pos3sv(v : FixedArray[Int16]) -> Unit {
  epoxy_glWindowPos3sv(d_glWindowPos3sv.get(), v)
}

///|
let d_glWindowPos3svARB : Dispatch = Dispatch::with_aliases(
  "glWindowPos3svARB",
  ["glWindowPos3sv", "glWindowPos3svMESA"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3svARB(fp : CPtr, v : FixedArray[Int16]) -> Unit = "epoxy_glWindowPos3svARB"

///|
pub fn gl_window_pos3sv_arb(v : FixedArray[Int16]) -> Unit {
  epoxy_glWindowPos3svARB(d_glWindowPos3svARB.get(), v)
}

///|
let d_glWindowPos3svMESA : Dispatch = Dispatch::with_aliases(
  "glWindowPos3svMESA",
  ["glWindowPos3sv", "glWindowPos3svARB"],
)

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos3svMESA(
  fp : CPtr,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glWindowPos3svMESA"

///|
pub fn gl_window_pos3sv_mesa(v : FixedArray[Int16]) -> Unit {
  epoxy_glWindowPos3svMESA(d_glWindowPos3svMESA.get(), v)
}

///|
let d_glWindowPos4dMESA : Dispatch = Dispatch::new("glWindowPos4dMESA")

///|
extern "c" fn epoxy_glWindowPos4dMESA(
  fp : CPtr,
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit = "epoxy_glWindowPos4dMESA"

///|
pub fn gl_window_pos4d_mesa(
  x : Double,
  y : Double,
  z : Double,
  w : Double,
) -> Unit {
  epoxy_glWindowPos4dMESA(d_glWindowPos4dMESA.get(), x, y, z, w)
}

///|
let d_glWindowPos4dvMESA : Dispatch = Dispatch::new("glWindowPos4dvMESA")

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos4dvMESA(
  fp : CPtr,
  v : FixedArray[Double],
) -> Unit = "epoxy_glWindowPos4dvMESA"

///|
pub fn gl_window_pos4dv_mesa(v : FixedArray[Double]) -> Unit {
  epoxy_glWindowPos4dvMESA(d_glWindowPos4dvMESA.get(), v)
}

///|
let d_glWindowPos4fMESA : Dispatch = Dispatch::new("glWindowPos4fMESA")

///|
extern "c" fn epoxy_glWindowPos4fMESA(
  fp : CPtr,
  x : Float,
  y : Float,
  z : Float,
  w : Float,
) -> Unit = "epoxy_glWindowPos4fMESA"

///|
pub fn gl_window_pos4f_mesa(x : Float, y : Float, z : Float, w : Float) -> Unit {
  epoxy_glWindowPos4fMESA(d_glWindowPos4fMESA.get(), x, y, z, w)
}

///|
let d_glWindowPos4fvMESA : Dispatch = Dispatch::new("glWindowPos4fvMESA")

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos4fvMESA(
  fp : CPtr,
  v : FixedArray[Float],
) -> Unit = "epoxy_glWindowPos4fvMESA"

///|
pub fn gl_window_pos4fv_mesa(v : FixedArray[Float]) -> Unit {
  epoxy_glWindowPos4fvMESA(d_glWindowPos4fvMESA.get(), v)
}

///|
let d_glWindowPos4iMESA : Dispatch = Dispatch::new("glWindowPos4iMESA")

///|
extern "c" fn epoxy_glWindowPos4iMESA(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glWindowPos4iMESA"

///|
pub fn gl_window_pos4i_mesa(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glWindowPos4iMESA(d_glWindowPos4iMESA.get(), x, y, z, w)
}

///|
let d_glWindowPos4ivMESA : Dispatch = Dispatch::new("glWindowPos4ivMESA")

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos4ivMESA(fp : CPtr, v : FixedArray[Int]) -> Unit = "epoxy_glWindowPos4ivMESA"

///|
pub fn gl_window_pos4iv_mesa(v : FixedArray[Int]) -> Unit {
  epoxy_glWindowPos4ivMESA(d_glWindowPos4ivMESA.get(), v)
}

///|
let d_glWindowPos4sMESA : Dispatch = Dispatch::new("glWindowPos4sMESA")

///|
extern "c" fn epoxy_glWindowPos4sMESA(
  fp : CPtr,
  x : Int,
  y : Int,
  z : Int,
  w : Int,
) -> Unit = "epoxy_glWindowPos4sMESA"

///|
pub fn gl_window_pos4s_mesa(x : Int, y : Int, z : Int, w : Int) -> Unit {
  epoxy_glWindowPos4sMESA(d_glWindowPos4sMESA.get(), x, y, z, w)
}

///|
let d_glWindowPos4svMESA : Dispatch = Dispatch::new("glWindowPos4svMESA")

///|
#borrow(v)
extern "c" fn epoxy_glWindowPos4svMESA(
  fp : CPtr,
  v : FixedArray[Int16],
) -> Unit = "epoxy_glWindowPos4svMESA"

///|
pub fn gl_window_pos4sv_mesa(v : FixedArray[Int16]) -> Unit {
  epoxy_glWindowPos4svMESA(d_glWindowPos4svMESA.get(), v)
}

///|
let d_glWindowRectanglesEXT : Dispatch = Dispatch::new("glWindowRectanglesEXT")

///|
#borrow(box)
extern "c" fn epoxy_glWindowRectanglesEXT(
  fp : CPtr,
  mode : UInt,
  count : Int,
  box : FixedArray[Int],
) -> Unit = "epoxy_glWindowRectanglesEXT"

///|
pub fn gl_window_rectangles_ext(
  mode : UInt,
  count : Int,
  box : FixedArray[Int],
) -> Unit {
  epoxy_glWindowRectanglesEXT(d_glWindowRectanglesEXT.get(), mode, count, box)
}

///|
let d_glWriteMaskEXT : Dispatch = Dispatch::new("glWriteMaskEXT")

///|
extern "c" fn epoxy_glWriteMaskEXT(
  fp : CPtr,
  res : UInt,
  in_ : UInt,
  outX : UInt,
  outY : UInt,
  outZ : UInt,
  outW : UInt,
) -> Unit = "epoxy_glWriteMaskEXT"

///|
pub fn gl_write_mask_ext(
  res : UInt,
  in_ : UInt,
  outX : UInt,
  outY : UInt,
  outZ : UInt,
  outW : UInt,
) -> Unit {
  epoxy_glWriteMaskEXT(d_glWriteMaskEXT.get(), res, in_, outX, outY, outZ, outW)
}

///|
let d_glDrawVkImageNV : Dispatch = Dispatch::new("glDrawVkImageNV")

///|
extern "c" fn epoxy_glDrawVkImageNV(
  fp : CPtr,
  vkImage : UInt64,
  sampler : UInt,
  x0 : Float,
  y0 : Float,
  x1 : Float,
  y1 : Float,
  z : Float,
  s0 : Float,
  t0 : Float,
  s1 : Float,
  t1 : Float,
) -> Unit = "epoxy_glDrawVkImageNV"

///|
pub fn gl_draw_vk_image_nv(
  vkImage : UInt64,
  sampler : UInt,
  x0 : Float,
  y0 : Float,
  x1 : Float,
  y1 : Float,
  z : Float,
  s0 : Float,
  t0 : Float,
  s1 : Float,
  t1 : Float,
) -> Unit {
  epoxy_glDrawVkImageNV(
    d_glDrawVkImageNV.get(),
    vkImage,
    sampler,
    x0,
    y0,
    x1,
    y1,
    z,
    s0,
    t0,
    s1,
    t1,
  )
}

///|
let d_glGetVkProcAddrNV : Dispatch = Dispatch::new("glGetVkProcAddrNV")

///|
#borrow(name)
extern "c" fn epoxy_glGetVkProcAddrNV(
  fp : CPtr,
  name : Bytes,
) -> GLVULKANPROCNV = "epoxy_glGetVkProcAddrNV"

///|
pub fn gl_get_vk_proc_addr_nv(name : Bytes) -> GLVULKANPROCNV {
  epoxy_glGetVkProcAddrNV(d_glGetVkProcAddrNV.get(), name)
}

///|
let d_glWaitVkSemaphoreNV : Dispatch = Dispatch::new("glWaitVkSemaphoreNV")

///|
extern "c" fn epoxy_glWaitVkSemaphoreNV(
  fp : CPtr,
  vkSemaphore : UInt64,
) -> Unit = "epoxy_glWaitVkSemaphoreNV"

///|
pub fn gl_wait_vk_semaphore_nv(vkSemaphore : UInt64) -> Unit {
  epoxy_glWaitVkSemaphoreNV(d_glWaitVkSemaphoreNV.get(), vkSemaphore)
}

///|
let d_glSignalVkSemaphoreNV : Dispatch = Dispatch::new("glSignalVkSemaphoreNV")

///|
extern "c" fn epoxy_glSignalVkSemaphoreNV(
  fp : CPtr,
  vkSemaphore : UInt64,
) -> Unit = "epoxy_glSignalVkSemaphoreNV"

///|
pub fn gl_signal_vk_semaphore_nv(vkSemaphore : UInt64) -> Unit {
  epoxy_glSignalVkSemaphoreNV(d_glSignalVkSemaphoreNV.get(), vkSemaphore)
}

///|
let d_glSignalVkFenceNV : Dispatch = Dispatch::new("glSignalVkFenceNV")

///|
extern "c" fn epoxy_glSignalVkFenceNV(fp : CPtr, vkFence : UInt64) -> Unit = "epoxy_glSignalVkFenceNV"

///|
pub fn gl_signal_vk_fence_nv(vkFence : UInt64) -> Unit {
  epoxy_glSignalVkFenceNV(d_glSignalVkFenceNV.get(), vkFence)
}

///|
let d_glFramebufferParameteriMESA : Dispatch = Dispatch::new(
  "glFramebufferParameteriMESA",
)

///|
extern "c" fn epoxy_glFramebufferParameteriMESA(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit = "epoxy_glFramebufferParameteriMESA"

///|
pub fn gl_framebuffer_parameteri_mesa(
  target : UInt,
  pname : UInt,
  param : Int,
) -> Unit {
  epoxy_glFramebufferParameteriMESA(
    d_glFramebufferParameteriMESA.get(),
    target,
    pname,
    param,
  )
}

///|
let d_glGetFramebufferParameterivMESA : Dispatch = Dispatch::new(
  "glGetFramebufferParameterivMESA",
)

///|
#borrow(params)
extern "c" fn epoxy_glGetFramebufferParameterivMESA(
  fp : CPtr,
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit = "epoxy_glGetFramebufferParameterivMESA"

///|
pub fn gl_get_framebuffer_parameteriv_mesa(
  target : UInt,
  pname : UInt,
  params : FixedArray[Int],
) -> Unit {
  epoxy_glGetFramebufferParameterivMESA(
    d_glGetFramebufferParameterivMESA.get(),
    target,
    pname,
    params,
  )
}