"""
Sokol Python Bindings (Auto-generated)

This module was automatically generated by generate_bindings.py
from the Sokol C headers using libclang.

Usage:
    from sokol_bindings import *
    sokol = load_sokol_dll('sokol-dll.dll')
"""

import ctypes
from ctypes import (
    Structure, Union, POINTER, CFUNCTYPE,
    c_bool, c_char, c_byte, c_ubyte, c_short, c_ushort,
    c_int, c_uint, c_long, c_ulong, c_longlong, c_ulonglong,
    c_float, c_double, c_size_t, c_ssize_t, c_void_p, c_char_p,
    c_int8, c_uint8, c_int16, c_uint16, c_int32, c_uint32,
    c_int64, c_uint64, c_wchar, c_wchar_p,
    byref, cast, sizeof, addressof,
)
from pathlib import Path
from typing import Optional, Any

# Platform detection
import sys
if sys.platform == 'win32':
    from ctypes import windll, WinDLL

# =============================================================================
# Type Helpers
# =============================================================================

# C type aliases
c_bool_p = POINTER(c_bool)
c_float_p = POINTER(c_float)
c_double_p = POINTER(c_double)
c_int_p = POINTER(c_int)
c_uint_p = POINTER(c_uint)
c_uint8_p = POINTER(c_uint8)
c_uint32_p = POINTER(c_uint32)

# =============================================================================
# Enums
# =============================================================================

# enum (unnamed at C:\skbuild\myown\sokol-py\generator\sokol_headers\sokol_gfx.h:2032:1)
SG_INVALID_ID = 0
SG_NUM_INFLIGHT_FRAMES = 2
SG_MAX_COLOR_ATTACHMENTS = 8
SG_MAX_UNIFORMBLOCK_MEMBERS = 16
SG_MAX_VERTEX_ATTRIBUTES = 16
SG_MAX_MIPMAPS = 16
SG_MAX_VERTEXBUFFER_BINDSLOTS = 8
SG_MAX_UNIFORMBLOCK_BINDSLOTS = 8
SG_MAX_VIEW_BINDSLOTS = 32
SG_MAX_SAMPLER_BINDSLOTS = 12
SG_MAX_TEXTURE_SAMPLER_PAIRS = 32
SG_MAX_PORTABLE_COLOR_ATTACHMENTS = 4
SG_MAX_PORTABLE_TEXTURE_BINDINGS_PER_STAGE = 16
SG_MAX_PORTABLE_STORAGEBUFFER_BINDINGS_PER_STAGE = 8
SG_MAX_PORTABLE_STORAGEIMAGE_BINDINGS_PER_STAGE = 4

# sg_backend
SG_BACKEND_GLCORE = 0
SG_BACKEND_GLES3 = 1
SG_BACKEND_D3D11 = 2
SG_BACKEND_METAL_IOS = 3
SG_BACKEND_METAL_MACOS = 4
SG_BACKEND_METAL_SIMULATOR = 5
SG_BACKEND_WGPU = 6
SG_BACKEND_VULKAN = 7
SG_BACKEND_DUMMY = 8

# sg_pixel_format
_SG_PIXELFORMAT_DEFAULT = 0
SG_PIXELFORMAT_NONE = 1
SG_PIXELFORMAT_R8 = 2
SG_PIXELFORMAT_R8SN = 3
SG_PIXELFORMAT_R8UI = 4
SG_PIXELFORMAT_R8SI = 5
SG_PIXELFORMAT_R16 = 6
SG_PIXELFORMAT_R16SN = 7
SG_PIXELFORMAT_R16UI = 8
SG_PIXELFORMAT_R16SI = 9
SG_PIXELFORMAT_R16F = 10
SG_PIXELFORMAT_RG8 = 11
SG_PIXELFORMAT_RG8SN = 12
SG_PIXELFORMAT_RG8UI = 13
SG_PIXELFORMAT_RG8SI = 14
SG_PIXELFORMAT_R32UI = 15
SG_PIXELFORMAT_R32SI = 16
SG_PIXELFORMAT_R32F = 17
SG_PIXELFORMAT_RG16 = 18
SG_PIXELFORMAT_RG16SN = 19
SG_PIXELFORMAT_RG16UI = 20
SG_PIXELFORMAT_RG16SI = 21
SG_PIXELFORMAT_RG16F = 22
SG_PIXELFORMAT_RGBA8 = 23
SG_PIXELFORMAT_SRGB8A8 = 24
SG_PIXELFORMAT_RGBA8SN = 25
SG_PIXELFORMAT_RGBA8UI = 26
SG_PIXELFORMAT_RGBA8SI = 27
SG_PIXELFORMAT_BGRA8 = 28
SG_PIXELFORMAT_RGB10A2 = 29
SG_PIXELFORMAT_RG11B10F = 30
SG_PIXELFORMAT_RGB9E5 = 31
SG_PIXELFORMAT_RG32UI = 32
SG_PIXELFORMAT_RG32SI = 33
SG_PIXELFORMAT_RG32F = 34
SG_PIXELFORMAT_RGBA16 = 35
SG_PIXELFORMAT_RGBA16SN = 36
SG_PIXELFORMAT_RGBA16UI = 37
SG_PIXELFORMAT_RGBA16SI = 38
SG_PIXELFORMAT_RGBA16F = 39
SG_PIXELFORMAT_RGBA32UI = 40
SG_PIXELFORMAT_RGBA32SI = 41
SG_PIXELFORMAT_RGBA32F = 42
SG_PIXELFORMAT_DEPTH = 43
SG_PIXELFORMAT_DEPTH_STENCIL = 44
SG_PIXELFORMAT_BC1_RGBA = 45
SG_PIXELFORMAT_BC2_RGBA = 46
SG_PIXELFORMAT_BC3_RGBA = 47
SG_PIXELFORMAT_BC3_SRGBA = 48
SG_PIXELFORMAT_BC4_R = 49
SG_PIXELFORMAT_BC4_RSN = 50
SG_PIXELFORMAT_BC5_RG = 51
SG_PIXELFORMAT_BC5_RGSN = 52
SG_PIXELFORMAT_BC6H_RGBF = 53
SG_PIXELFORMAT_BC6H_RGBUF = 54
SG_PIXELFORMAT_BC7_RGBA = 55
SG_PIXELFORMAT_BC7_SRGBA = 56
SG_PIXELFORMAT_ETC2_RGB8 = 57
SG_PIXELFORMAT_ETC2_SRGB8 = 58
SG_PIXELFORMAT_ETC2_RGB8A1 = 59
SG_PIXELFORMAT_ETC2_RGBA8 = 60
SG_PIXELFORMAT_ETC2_SRGB8A8 = 61
SG_PIXELFORMAT_EAC_R11 = 62
SG_PIXELFORMAT_EAC_R11SN = 63
SG_PIXELFORMAT_EAC_RG11 = 64
SG_PIXELFORMAT_EAC_RG11SN = 65
SG_PIXELFORMAT_ASTC_4x4_RGBA = 66
SG_PIXELFORMAT_ASTC_4x4_SRGBA = 67
_SG_PIXELFORMAT_NUM = 68
_SG_PIXELFORMAT_FORCE_U32 = 2147483647

# sg_resource_state
SG_RESOURCESTATE_INITIAL = 0
SG_RESOURCESTATE_ALLOC = 1
SG_RESOURCESTATE_VALID = 2
SG_RESOURCESTATE_FAILED = 3
SG_RESOURCESTATE_INVALID = 4
_SG_RESOURCESTATE_FORCE_U32 = 2147483647

# sg_index_type
_SG_INDEXTYPE_DEFAULT = 0
SG_INDEXTYPE_NONE = 1
SG_INDEXTYPE_UINT16 = 2
SG_INDEXTYPE_UINT32 = 3
_SG_INDEXTYPE_NUM = 4
_SG_INDEXTYPE_FORCE_U32 = 2147483647

# sg_image_type
_SG_IMAGETYPE_DEFAULT = 0
SG_IMAGETYPE_2D = 1
SG_IMAGETYPE_CUBE = 2
SG_IMAGETYPE_3D = 3
SG_IMAGETYPE_ARRAY = 4
_SG_IMAGETYPE_NUM = 5
_SG_IMAGETYPE_FORCE_U32 = 2147483647

# sg_image_sample_type
_SG_IMAGESAMPLETYPE_DEFAULT = 0
SG_IMAGESAMPLETYPE_FLOAT = 1
SG_IMAGESAMPLETYPE_DEPTH = 2
SG_IMAGESAMPLETYPE_SINT = 3
SG_IMAGESAMPLETYPE_UINT = 4
SG_IMAGESAMPLETYPE_UNFILTERABLE_FLOAT = 5
_SG_IMAGESAMPLETYPE_NUM = 6
_SG_IMAGESAMPLETYPE_FORCE_U32 = 2147483647

# sg_sampler_type
_SG_SAMPLERTYPE_DEFAULT = 0
SG_SAMPLERTYPE_FILTERING = 1
SG_SAMPLERTYPE_NONFILTERING = 2
SG_SAMPLERTYPE_COMPARISON = 3
_SG_SAMPLERTYPE_NUM = 4
_SG_SAMPLERTYPE_FORCE_U32 = 5

# sg_primitive_type
_SG_PRIMITIVETYPE_DEFAULT = 0
SG_PRIMITIVETYPE_POINTS = 1
SG_PRIMITIVETYPE_LINES = 2
SG_PRIMITIVETYPE_LINE_STRIP = 3
SG_PRIMITIVETYPE_TRIANGLES = 4
SG_PRIMITIVETYPE_TRIANGLE_STRIP = 5
_SG_PRIMITIVETYPE_NUM = 6
_SG_PRIMITIVETYPE_FORCE_U32 = 2147483647

# sg_filter
_SG_FILTER_DEFAULT = 0
SG_FILTER_NEAREST = 1
SG_FILTER_LINEAR = 2
_SG_FILTER_NUM = 3
_SG_FILTER_FORCE_U32 = 2147483647

# sg_wrap
_SG_WRAP_DEFAULT = 0
SG_WRAP_REPEAT = 1
SG_WRAP_CLAMP_TO_EDGE = 2
SG_WRAP_CLAMP_TO_BORDER = 3
SG_WRAP_MIRRORED_REPEAT = 4
_SG_WRAP_NUM = 5
_SG_WRAP_FORCE_U32 = 2147483647

# sg_border_color
_SG_BORDERCOLOR_DEFAULT = 0
SG_BORDERCOLOR_TRANSPARENT_BLACK = 1
SG_BORDERCOLOR_OPAQUE_BLACK = 2
SG_BORDERCOLOR_OPAQUE_WHITE = 3
_SG_BORDERCOLOR_NUM = 4
_SG_BORDERCOLOR_FORCE_U32 = 2147483647

# sg_vertex_format
SG_VERTEXFORMAT_INVALID = 0
SG_VERTEXFORMAT_FLOAT = 1
SG_VERTEXFORMAT_FLOAT2 = 2
SG_VERTEXFORMAT_FLOAT3 = 3
SG_VERTEXFORMAT_FLOAT4 = 4
SG_VERTEXFORMAT_INT = 5
SG_VERTEXFORMAT_INT2 = 6
SG_VERTEXFORMAT_INT3 = 7
SG_VERTEXFORMAT_INT4 = 8
SG_VERTEXFORMAT_UINT = 9
SG_VERTEXFORMAT_UINT2 = 10
SG_VERTEXFORMAT_UINT3 = 11
SG_VERTEXFORMAT_UINT4 = 12
SG_VERTEXFORMAT_BYTE4 = 13
SG_VERTEXFORMAT_BYTE4N = 14
SG_VERTEXFORMAT_UBYTE4 = 15
SG_VERTEXFORMAT_UBYTE4N = 16
SG_VERTEXFORMAT_SHORT2 = 17
SG_VERTEXFORMAT_SHORT2N = 18
SG_VERTEXFORMAT_USHORT2 = 19
SG_VERTEXFORMAT_USHORT2N = 20
SG_VERTEXFORMAT_SHORT4 = 21
SG_VERTEXFORMAT_SHORT4N = 22
SG_VERTEXFORMAT_USHORT4 = 23
SG_VERTEXFORMAT_USHORT4N = 24
SG_VERTEXFORMAT_UINT10_N2 = 25
SG_VERTEXFORMAT_HALF2 = 26
SG_VERTEXFORMAT_HALF4 = 27
_SG_VERTEXFORMAT_NUM = 28
_SG_VERTEXFORMAT_FORCE_U32 = 2147483647

# sg_vertex_step
_SG_VERTEXSTEP_DEFAULT = 0
SG_VERTEXSTEP_PER_VERTEX = 1
SG_VERTEXSTEP_PER_INSTANCE = 2
_SG_VERTEXSTEP_NUM = 3
_SG_VERTEXSTEP_FORCE_U32 = 2147483647

# sg_uniform_type
SG_UNIFORMTYPE_INVALID = 0
SG_UNIFORMTYPE_FLOAT = 1
SG_UNIFORMTYPE_FLOAT2 = 2
SG_UNIFORMTYPE_FLOAT3 = 3
SG_UNIFORMTYPE_FLOAT4 = 4
SG_UNIFORMTYPE_INT = 5
SG_UNIFORMTYPE_INT2 = 6
SG_UNIFORMTYPE_INT3 = 7
SG_UNIFORMTYPE_INT4 = 8
SG_UNIFORMTYPE_MAT4 = 9
_SG_UNIFORMTYPE_NUM = 10
_SG_UNIFORMTYPE_FORCE_U32 = 2147483647

# sg_uniform_layout
_SG_UNIFORMLAYOUT_DEFAULT = 0
SG_UNIFORMLAYOUT_NATIVE = 1
SG_UNIFORMLAYOUT_STD140 = 2
_SG_UNIFORMLAYOUT_NUM = 3
_SG_UNIFORMLAYOUT_FORCE_U32 = 2147483647

# sg_cull_mode
_SG_CULLMODE_DEFAULT = 0
SG_CULLMODE_NONE = 1
SG_CULLMODE_FRONT = 2
SG_CULLMODE_BACK = 3
_SG_CULLMODE_NUM = 4
_SG_CULLMODE_FORCE_U32 = 2147483647

# sg_face_winding
_SG_FACEWINDING_DEFAULT = 0
SG_FACEWINDING_CCW = 1
SG_FACEWINDING_CW = 2
_SG_FACEWINDING_NUM = 3
_SG_FACEWINDING_FORCE_U32 = 2147483647

# sg_compare_func
_SG_COMPAREFUNC_DEFAULT = 0
SG_COMPAREFUNC_NEVER = 1
SG_COMPAREFUNC_LESS = 2
SG_COMPAREFUNC_EQUAL = 3
SG_COMPAREFUNC_LESS_EQUAL = 4
SG_COMPAREFUNC_GREATER = 5
SG_COMPAREFUNC_NOT_EQUAL = 6
SG_COMPAREFUNC_GREATER_EQUAL = 7
SG_COMPAREFUNC_ALWAYS = 8
_SG_COMPAREFUNC_NUM = 9
_SG_COMPAREFUNC_FORCE_U32 = 2147483647

# sg_stencil_op
_SG_STENCILOP_DEFAULT = 0
SG_STENCILOP_KEEP = 1
SG_STENCILOP_ZERO = 2
SG_STENCILOP_REPLACE = 3
SG_STENCILOP_INCR_CLAMP = 4
SG_STENCILOP_DECR_CLAMP = 5
SG_STENCILOP_INVERT = 6
SG_STENCILOP_INCR_WRAP = 7
SG_STENCILOP_DECR_WRAP = 8
_SG_STENCILOP_NUM = 9
_SG_STENCILOP_FORCE_U32 = 2147483647

# sg_blend_factor
_SG_BLENDFACTOR_DEFAULT = 0
SG_BLENDFACTOR_ZERO = 1
SG_BLENDFACTOR_ONE = 2
SG_BLENDFACTOR_SRC_COLOR = 3
SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 4
SG_BLENDFACTOR_SRC_ALPHA = 5
SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 6
SG_BLENDFACTOR_DST_COLOR = 7
SG_BLENDFACTOR_ONE_MINUS_DST_COLOR = 8
SG_BLENDFACTOR_DST_ALPHA = 9
SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 10
SG_BLENDFACTOR_SRC_ALPHA_SATURATED = 11
SG_BLENDFACTOR_BLEND_COLOR = 12
SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR = 13
SG_BLENDFACTOR_BLEND_ALPHA = 14
SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA = 15
SG_BLENDFACTOR_SRC1_COLOR = 16
SG_BLENDFACTOR_ONE_MINUS_SRC1_COLOR = 17
SG_BLENDFACTOR_SRC1_ALPHA = 18
SG_BLENDFACTOR_ONE_MINUS_SRC1_ALPHA = 19
_SG_BLENDFACTOR_NUM = 20
_SG_BLENDFACTOR_FORCE_U32 = 2147483647

# sg_blend_op
_SG_BLENDOP_DEFAULT = 0
SG_BLENDOP_ADD = 1
SG_BLENDOP_SUBTRACT = 2
SG_BLENDOP_REVERSE_SUBTRACT = 3
SG_BLENDOP_MIN = 4
SG_BLENDOP_MAX = 5
_SG_BLENDOP_NUM = 6
_SG_BLENDOP_FORCE_U32 = 2147483647

# sg_color_mask
_SG_COLORMASK_DEFAULT = 0
SG_COLORMASK_NONE = 16
SG_COLORMASK_R = 1
SG_COLORMASK_G = 2
SG_COLORMASK_RG = 3
SG_COLORMASK_B = 4
SG_COLORMASK_RB = 5
SG_COLORMASK_GB = 6
SG_COLORMASK_RGB = 7
SG_COLORMASK_A = 8
SG_COLORMASK_RA = 9
SG_COLORMASK_GA = 10
SG_COLORMASK_RGA = 11
SG_COLORMASK_BA = 12
SG_COLORMASK_RBA = 13
SG_COLORMASK_GBA = 14
SG_COLORMASK_RGBA = 15
_SG_COLORMASK_FORCE_U32 = 2147483647

# sg_load_action
_SG_LOADACTION_DEFAULT = 0
SG_LOADACTION_CLEAR = 1
SG_LOADACTION_LOAD = 2
SG_LOADACTION_DONTCARE = 3
_SG_LOADACTION_FORCE_U32 = 2147483647

# sg_store_action
_SG_STOREACTION_DEFAULT = 0
SG_STOREACTION_STORE = 1
SG_STOREACTION_DONTCARE = 2
_SG_STOREACTION_FORCE_U32 = 2147483647

# sg_view_type
SG_VIEWTYPE_INVALID = 0
SG_VIEWTYPE_STORAGEBUFFER = 1
SG_VIEWTYPE_STORAGEIMAGE = 2
SG_VIEWTYPE_TEXTURE = 3
SG_VIEWTYPE_COLORATTACHMENT = 4
SG_VIEWTYPE_RESOLVEATTACHMENT = 5
SG_VIEWTYPE_DEPTHSTENCILATTACHMENT = 6
_SG_VIEWTYPE_FORCE_U32 = 2147483647

# sg_shader_stage
SG_SHADERSTAGE_NONE = 0
SG_SHADERSTAGE_VERTEX = 1
SG_SHADERSTAGE_FRAGMENT = 2
SG_SHADERSTAGE_COMPUTE = 3
_SG_SHADERSTAGE_FORCE_U32 = 2147483647

# sg_shader_attr_base_type
SG_SHADERATTRBASETYPE_UNDEFINED = 0
SG_SHADERATTRBASETYPE_FLOAT = 1
SG_SHADERATTRBASETYPE_SINT = 2
SG_SHADERATTRBASETYPE_UINT = 3
_SG_SHADERATTRBASETYPE_FORCE_U32 = 2147483647

# sg_log_item
SG_LOGITEM_OK = 0
SG_LOGITEM_MALLOC_FAILED = 1
SG_LOGITEM_GL_TEXTURE_FORMAT_NOT_SUPPORTED = 2
SG_LOGITEM_GL_3D_TEXTURES_NOT_SUPPORTED = 3
SG_LOGITEM_GL_ARRAY_TEXTURES_NOT_SUPPORTED = 4
SG_LOGITEM_GL_STORAGEBUFFER_GLSL_BINDING_OUT_OF_RANGE = 5
SG_LOGITEM_GL_STORAGEIMAGE_GLSL_BINDING_OUT_OF_RANGE = 6
SG_LOGITEM_GL_SHADER_COMPILATION_FAILED = 7
SG_LOGITEM_GL_SHADER_LINKING_FAILED = 8
SG_LOGITEM_GL_VERTEX_ATTRIBUTE_NOT_FOUND_IN_SHADER = 9
SG_LOGITEM_GL_UNIFORMBLOCK_NAME_NOT_FOUND_IN_SHADER = 10
SG_LOGITEM_GL_IMAGE_SAMPLER_NAME_NOT_FOUND_IN_SHADER = 11
SG_LOGITEM_GL_FRAMEBUFFER_STATUS_UNDEFINED = 12
SG_LOGITEM_GL_FRAMEBUFFER_STATUS_INCOMPLETE_ATTACHMENT = 13
SG_LOGITEM_GL_FRAMEBUFFER_STATUS_INCOMPLETE_MISSING_ATTACHMENT = 14
SG_LOGITEM_GL_FRAMEBUFFER_STATUS_UNSUPPORTED = 15
SG_LOGITEM_GL_FRAMEBUFFER_STATUS_INCOMPLETE_MULTISAMPLE = 16
SG_LOGITEM_GL_FRAMEBUFFER_STATUS_UNKNOWN = 17
SG_LOGITEM_D3D11_FEATURE_LEVEL_0_DETECTED = 18
SG_LOGITEM_D3D11_CREATE_BUFFER_FAILED = 19
SG_LOGITEM_D3D11_CREATE_BUFFER_SRV_FAILED = 20
SG_LOGITEM_D3D11_CREATE_BUFFER_UAV_FAILED = 21
SG_LOGITEM_D3D11_CREATE_DEPTH_TEXTURE_UNSUPPORTED_PIXEL_FORMAT = 22
SG_LOGITEM_D3D11_CREATE_DEPTH_TEXTURE_FAILED = 23
SG_LOGITEM_D3D11_CREATE_2D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT = 24
SG_LOGITEM_D3D11_CREATE_2D_TEXTURE_FAILED = 25
SG_LOGITEM_D3D11_CREATE_2D_SRV_FAILED = 26
SG_LOGITEM_D3D11_CREATE_3D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT = 27
SG_LOGITEM_D3D11_CREATE_3D_TEXTURE_FAILED = 28
SG_LOGITEM_D3D11_CREATE_3D_SRV_FAILED = 29
SG_LOGITEM_D3D11_CREATE_MSAA_TEXTURE_FAILED = 30
SG_LOGITEM_D3D11_CREATE_SAMPLER_STATE_FAILED = 31
SG_LOGITEM_D3D11_UNIFORMBLOCK_HLSL_REGISTER_B_OUT_OF_RANGE = 32
SG_LOGITEM_D3D11_STORAGEBUFFER_HLSL_REGISTER_T_OUT_OF_RANGE = 33
SG_LOGITEM_D3D11_STORAGEBUFFER_HLSL_REGISTER_U_OUT_OF_RANGE = 34
SG_LOGITEM_D3D11_IMAGE_HLSL_REGISTER_T_OUT_OF_RANGE = 35
SG_LOGITEM_D3D11_STORAGEIMAGE_HLSL_REGISTER_U_OUT_OF_RANGE = 36
SG_LOGITEM_D3D11_SAMPLER_HLSL_REGISTER_S_OUT_OF_RANGE = 37
SG_LOGITEM_D3D11_LOAD_D3DCOMPILER_47_DLL_FAILED = 38
SG_LOGITEM_D3D11_SHADER_COMPILATION_FAILED = 39
SG_LOGITEM_D3D11_SHADER_COMPILATION_OUTPUT = 40
SG_LOGITEM_D3D11_CREATE_CONSTANT_BUFFER_FAILED = 41
SG_LOGITEM_D3D11_CREATE_INPUT_LAYOUT_FAILED = 42
SG_LOGITEM_D3D11_CREATE_RASTERIZER_STATE_FAILED = 43
SG_LOGITEM_D3D11_CREATE_DEPTH_STENCIL_STATE_FAILED = 44
SG_LOGITEM_D3D11_CREATE_BLEND_STATE_FAILED = 45
SG_LOGITEM_D3D11_CREATE_RTV_FAILED = 46
SG_LOGITEM_D3D11_CREATE_DSV_FAILED = 47
SG_LOGITEM_D3D11_CREATE_UAV_FAILED = 48
SG_LOGITEM_D3D11_MAP_FOR_UPDATE_BUFFER_FAILED = 49
SG_LOGITEM_D3D11_MAP_FOR_APPEND_BUFFER_FAILED = 50
SG_LOGITEM_D3D11_MAP_FOR_UPDATE_IMAGE_FAILED = 51
SG_LOGITEM_METAL_CREATE_BUFFER_FAILED = 52
SG_LOGITEM_METAL_TEXTURE_FORMAT_NOT_SUPPORTED = 53
SG_LOGITEM_METAL_CREATE_TEXTURE_FAILED = 54
SG_LOGITEM_METAL_CREATE_SAMPLER_FAILED = 55
SG_LOGITEM_METAL_SHADER_COMPILATION_FAILED = 56
SG_LOGITEM_METAL_SHADER_CREATION_FAILED = 57
SG_LOGITEM_METAL_SHADER_COMPILATION_OUTPUT = 58
SG_LOGITEM_METAL_SHADER_ENTRY_NOT_FOUND = 59
SG_LOGITEM_METAL_UNIFORMBLOCK_MSL_BUFFER_SLOT_OUT_OF_RANGE = 60
SG_LOGITEM_METAL_STORAGEBUFFER_MSL_BUFFER_SLOT_OUT_OF_RANGE = 61
SG_LOGITEM_METAL_STORAGEIMAGE_MSL_TEXTURE_SLOT_OUT_OF_RANGE = 62
SG_LOGITEM_METAL_IMAGE_MSL_TEXTURE_SLOT_OUT_OF_RANGE = 63
SG_LOGITEM_METAL_SAMPLER_MSL_SAMPLER_SLOT_OUT_OF_RANGE = 64
SG_LOGITEM_METAL_CREATE_CPS_FAILED = 65
SG_LOGITEM_METAL_CREATE_CPS_OUTPUT = 66
SG_LOGITEM_METAL_CREATE_RPS_FAILED = 67
SG_LOGITEM_METAL_CREATE_RPS_OUTPUT = 68
SG_LOGITEM_METAL_CREATE_DSS_FAILED = 69
SG_LOGITEM_WGPU_BINDGROUPS_POOL_EXHAUSTED = 70
SG_LOGITEM_WGPU_BINDGROUPSCACHE_SIZE_GREATER_ONE = 71
SG_LOGITEM_WGPU_BINDGROUPSCACHE_SIZE_POW2 = 72
SG_LOGITEM_WGPU_CREATEBINDGROUP_FAILED = 73
SG_LOGITEM_WGPU_CREATE_BUFFER_FAILED = 74
SG_LOGITEM_WGPU_CREATE_TEXTURE_FAILED = 75
SG_LOGITEM_WGPU_CREATE_TEXTURE_VIEW_FAILED = 76
SG_LOGITEM_WGPU_CREATE_SAMPLER_FAILED = 77
SG_LOGITEM_WGPU_CREATE_SHADER_MODULE_FAILED = 78
SG_LOGITEM_WGPU_SHADER_CREATE_BINDGROUP_LAYOUT_FAILED = 79
SG_LOGITEM_WGPU_UNIFORMBLOCK_WGSL_GROUP0_BINDING_OUT_OF_RANGE = 80
SG_LOGITEM_WGPU_TEXTURE_WGSL_GROUP1_BINDING_OUT_OF_RANGE = 81
SG_LOGITEM_WGPU_STORAGEBUFFER_WGSL_GROUP1_BINDING_OUT_OF_RANGE = 82
SG_LOGITEM_WGPU_STORAGEIMAGE_WGSL_GROUP1_BINDING_OUT_OF_RANGE = 83
SG_LOGITEM_WGPU_SAMPLER_WGSL_GROUP1_BINDING_OUT_OF_RANGE = 84
SG_LOGITEM_WGPU_CREATE_PIPELINE_LAYOUT_FAILED = 85
SG_LOGITEM_WGPU_CREATE_RENDER_PIPELINE_FAILED = 86
SG_LOGITEM_WGPU_CREATE_COMPUTE_PIPELINE_FAILED = 87
SG_LOGITEM_VULKAN_REQUIRED_EXTENSION_FUNCTION_MISSING = 88
SG_LOGITEM_VULKAN_ALLOC_DEVICE_MEMORY_NO_SUITABLE_MEMORY_TYPE = 89
SG_LOGITEM_VULKAN_ALLOCATE_MEMORY_FAILED = 90
SG_LOGITEM_VULKAN_ALLOC_BUFFER_DEVICE_MEMORY_FAILED = 91
SG_LOGITEM_VULKAN_ALLOC_IMAGE_DEVICE_MEMORY_FAILED = 92
SG_LOGITEM_VULKAN_DELETE_QUEUE_EXHAUSTED = 93
SG_LOGITEM_VULKAN_STAGING_CREATE_BUFFER_FAILED = 94
SG_LOGITEM_VULKAN_STAGING_ALLOCATE_MEMORY_FAILED = 95
SG_LOGITEM_VULKAN_STAGING_BIND_BUFFER_MEMORY_FAILED = 96
SG_LOGITEM_VULKAN_STAGING_STREAM_BUFFER_OVERFLOW = 97
SG_LOGITEM_VULKAN_CREATE_SHARED_BUFFER_FAILED = 98
SG_LOGITEM_VULKAN_ALLOCATE_SHARED_BUFFER_MEMORY_FAILED = 99
SG_LOGITEM_VULKAN_BIND_SHARED_BUFFER_MEMORY_FAILED = 100
SG_LOGITEM_VULKAN_MAP_SHARED_BUFFER_MEMORY_FAILED = 101
SG_LOGITEM_VULKAN_CREATE_BUFFER_FAILED = 102
SG_LOGITEM_VULKAN_BIND_BUFFER_MEMORY_FAILED = 103
SG_LOGITEM_VULKAN_CREATE_IMAGE_FAILED = 104
SG_LOGITEM_VULKAN_BIND_IMAGE_MEMORY_FAILED = 105
SG_LOGITEM_VULKAN_CREATE_SHADER_MODULE_FAILED = 106
SG_LOGITEM_VULKAN_UNIFORMBLOCK_SPIRV_SET0_BINDING_OUT_OF_RANGE = 107
SG_LOGITEM_VULKAN_TEXTURE_SPIRV_SET1_BINDING_OUT_OF_RANGE = 108
SG_LOGITEM_VULKAN_STORAGEBUFFER_SPIRV_SET1_BINDING_OUT_OF_RANGE = 109
SG_LOGITEM_VULKAN_STORAGEIMAGE_SPIRV_SET1_BINDING_OUT_OF_RANGE = 110
SG_LOGITEM_VULKAN_SAMPLER_SPIRV_SET1_BINDING_OUT_OF_RANGE = 111
SG_LOGITEM_VULKAN_CREATE_DESCRIPTOR_SET_LAYOUT_FAILED = 112
SG_LOGITEM_VULKAN_SHADER_UNIFORM_DESCRIPTOR_SET_SIZE_VS_CACHE_SIZE = 113
SG_LOGITEM_VULKAN_CREATE_PIPELINE_LAYOUT_FAILED = 114
SG_LOGITEM_VULKAN_CREATE_GRAPHICS_PIPELINE_FAILED = 115
SG_LOGITEM_VULKAN_CREATE_COMPUTE_PIPELINE_FAILED = 116
SG_LOGITEM_VULKAN_CREATE_IMAGE_VIEW_FAILED = 117
SG_LOGITEM_VULKAN_VIEW_MAX_DESCRIPTOR_SIZE = 118
SG_LOGITEM_VULKAN_CREATE_SAMPLER_FAILED = 119
SG_LOGITEM_VULKAN_SAMPLER_MAX_DESCRIPTOR_SIZE = 120
SG_LOGITEM_VULKAN_WAIT_FOR_FENCE_FAILED = 121
SG_LOGITEM_VULKAN_UNIFORM_BUFFER_OVERFLOW = 122
SG_LOGITEM_VULKAN_DESCRIPTOR_BUFFER_OVERFLOW = 123
SG_LOGITEM_IDENTICAL_COMMIT_LISTENER = 124
SG_LOGITEM_COMMIT_LISTENER_ARRAY_FULL = 125
SG_LOGITEM_TRACE_HOOKS_NOT_ENABLED = 126
SG_LOGITEM_DEALLOC_BUFFER_INVALID_STATE = 127
SG_LOGITEM_DEALLOC_IMAGE_INVALID_STATE = 128
SG_LOGITEM_DEALLOC_SAMPLER_INVALID_STATE = 129
SG_LOGITEM_DEALLOC_SHADER_INVALID_STATE = 130
SG_LOGITEM_DEALLOC_PIPELINE_INVALID_STATE = 131
SG_LOGITEM_DEALLOC_VIEW_INVALID_STATE = 132
SG_LOGITEM_INIT_BUFFER_INVALID_STATE = 133
SG_LOGITEM_INIT_IMAGE_INVALID_STATE = 134
SG_LOGITEM_INIT_SAMPLER_INVALID_STATE = 135
SG_LOGITEM_INIT_SHADER_INVALID_STATE = 136
SG_LOGITEM_INIT_PIPELINE_INVALID_STATE = 137
SG_LOGITEM_INIT_VIEW_INVALID_STATE = 138
SG_LOGITEM_UNINIT_BUFFER_INVALID_STATE = 139
SG_LOGITEM_UNINIT_IMAGE_INVALID_STATE = 140
SG_LOGITEM_UNINIT_SAMPLER_INVALID_STATE = 141
SG_LOGITEM_UNINIT_SHADER_INVALID_STATE = 142
SG_LOGITEM_UNINIT_PIPELINE_INVALID_STATE = 143
SG_LOGITEM_UNINIT_VIEW_INVALID_STATE = 144
SG_LOGITEM_FAIL_BUFFER_INVALID_STATE = 145
SG_LOGITEM_FAIL_IMAGE_INVALID_STATE = 146
SG_LOGITEM_FAIL_SAMPLER_INVALID_STATE = 147
SG_LOGITEM_FAIL_SHADER_INVALID_STATE = 148
SG_LOGITEM_FAIL_PIPELINE_INVALID_STATE = 149
SG_LOGITEM_FAIL_VIEW_INVALID_STATE = 150
SG_LOGITEM_BUFFER_POOL_EXHAUSTED = 151
SG_LOGITEM_IMAGE_POOL_EXHAUSTED = 152
SG_LOGITEM_SAMPLER_POOL_EXHAUSTED = 153
SG_LOGITEM_SHADER_POOL_EXHAUSTED = 154
SG_LOGITEM_PIPELINE_POOL_EXHAUSTED = 155
SG_LOGITEM_VIEW_POOL_EXHAUSTED = 156
SG_LOGITEM_BEGINPASS_TOO_MANY_COLOR_ATTACHMENTS = 157
SG_LOGITEM_BEGINPASS_TOO_MANY_RESOLVE_ATTACHMENTS = 158
SG_LOGITEM_BEGINPASS_ATTACHMENTS_ALIVE = 159
SG_LOGITEM_DRAW_WITHOUT_BINDINGS = 160
SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_TEXTURES = 161
SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_TEXTURES = 162
SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_TEXTURES = 163
SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_STORAGEBUFFERS = 164
SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_STORAGEBUFFERS = 165
SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_STORAGEBUFFERS = 166
SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_STORAGEIMAGES = 167
SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_STORAGEIMAGES = 168
SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_STORAGEIMAGES = 169
SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_TEXTURESAMPLERPAIRS = 170
SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_TEXTURESAMPLERPAIRS = 171
SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_TEXTURESAMPLERPAIRS = 172
SG_LOGITEM_VALIDATE_BUFFERDESC_CANARY = 173
SG_LOGITEM_VALIDATE_BUFFERDESC_IMMUTABLE_DYNAMIC_STREAM = 174
SG_LOGITEM_VALIDATE_BUFFERDESC_SEPARATE_BUFFER_TYPES = 175
SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_NONZERO_SIZE = 176
SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_MATCHING_DATA_SIZE = 177
SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_ZERO_DATA_SIZE = 178
SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_NO_DATA = 179
SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_DATA = 180
SG_LOGITEM_VALIDATE_BUFFERDESC_STORAGEBUFFER_SUPPORTED = 181
SG_LOGITEM_VALIDATE_BUFFERDESC_STORAGEBUFFER_SIZE_MULTIPLE_4 = 182
SG_LOGITEM_VALIDATE_IMAGEDATA_NODATA = 183
SG_LOGITEM_VALIDATE_IMAGEDATA_DATA_SIZE = 184
SG_LOGITEM_VALIDATE_IMAGEDESC_CANARY = 185
SG_LOGITEM_VALIDATE_IMAGEDESC_IMMUTABLE_DYNAMIC_STREAM = 186
SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_2D_NUMSLICES = 187
SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_CUBE_NUMSLICES = 188
SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_ARRAY_NUMSLICES = 189
SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_3D_NUMSLICES = 190
SG_LOGITEM_VALIDATE_IMAGEDESC_NUMSLICES = 191
SG_LOGITEM_VALIDATE_IMAGEDESC_WIDTH = 192
SG_LOGITEM_VALIDATE_IMAGEDESC_HEIGHT = 193
SG_LOGITEM_VALIDATE_IMAGEDESC_NONRT_PIXELFORMAT = 194
SG_LOGITEM_VALIDATE_IMAGEDESC_MSAA_BUT_NO_ATTACHMENT = 195
SG_LOGITEM_VALIDATE_IMAGEDESC_DEPTH_3D_IMAGE = 196
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_IMMUTABLE = 197
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_NO_DATA = 198
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_PIXELFORMAT = 199
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_RESOLVE_EXPECT_NO_MSAA = 200
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_NO_MSAA_SUPPORT = 201
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_NUM_MIPMAPS = 202
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_3D_IMAGE = 203
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_CUBE_IMAGE = 204
SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_ARRAY_IMAGE = 205
SG_LOGITEM_VALIDATE_IMAGEDESC_STORAGEIMAGE_PIXELFORMAT = 206
SG_LOGITEM_VALIDATE_IMAGEDESC_STORAGEIMAGE_EXPECT_NO_MSAA = 207
SG_LOGITEM_VALIDATE_IMAGEDESC_INJECTED_NO_DATA = 208
SG_LOGITEM_VALIDATE_IMAGEDESC_DYNAMIC_NO_DATA = 209
SG_LOGITEM_VALIDATE_IMAGEDESC_COMPRESSED_IMMUTABLE = 210
SG_LOGITEM_VALIDATE_SAMPLERDESC_CANARY = 211
SG_LOGITEM_VALIDATE_SAMPLERDESC_ANISTROPIC_REQUIRES_LINEAR_FILTERING = 212
SG_LOGITEM_VALIDATE_SHADERDESC_CANARY = 213
SG_LOGITEM_VALIDATE_SHADERDESC_VERTEX_SOURCE = 214
SG_LOGITEM_VALIDATE_SHADERDESC_FRAGMENT_SOURCE = 215
SG_LOGITEM_VALIDATE_SHADERDESC_COMPUTE_SOURCE = 216
SG_LOGITEM_VALIDATE_SHADERDESC_VERTEX_SOURCE_OR_BYTECODE = 217
SG_LOGITEM_VALIDATE_SHADERDESC_FRAGMENT_SOURCE_OR_BYTECODE = 218
SG_LOGITEM_VALIDATE_SHADERDESC_COMPUTE_SOURCE_OR_BYTECODE = 219
SG_LOGITEM_VALIDATE_SHADERDESC_INVALID_SHADER_COMBO = 220
SG_LOGITEM_VALIDATE_SHADERDESC_NO_BYTECODE_SIZE = 221
SG_LOGITEM_VALIDATE_SHADERDESC_METAL_THREADS_PER_THREADGROUP_INITIALIZED = 222
SG_LOGITEM_VALIDATE_SHADERDESC_METAL_THREADS_PER_THREADGROUP_MULTIPLE_32 = 223
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_NO_CONT_MEMBERS = 224
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_SIZE_IS_ZERO = 225
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_METAL_BUFFER_SLOT_COLLISION = 226
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_HLSL_REGISTER_B_COLLISION = 227
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_WGSL_GROUP0_BINDING_COLLISION = 228
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_SPIRV_SET0_BINDING_COLLISION = 229
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_NO_MEMBERS = 230
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_UNIFORM_GLSL_NAME = 231
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_SIZE_MISMATCH = 232
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_ARRAY_COUNT = 233
SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_STD140_ARRAY_TYPE = 234
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_METAL_BUFFER_SLOT_COLLISION = 235
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_HLSL_REGISTER_T_COLLISION = 236
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_HLSL_REGISTER_U_COLLISION = 237
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_GLSL_BINDING_COLLISION = 238
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_WGSL_GROUP1_BINDING_COLLISION = 239
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_SPIRV_SET1_BINDING_COLLISION = 240
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_EXPECT_COMPUTE_STAGE = 241
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_METAL_TEXTURE_SLOT_COLLISION = 242
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_HLSL_REGISTER_U_COLLISION = 243
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_GLSL_BINDING_COLLISION = 244
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_WGSL_GROUP1_BINDING_COLLISION = 245
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_SPIRV_SET1_BINDING_COLLISION = 246
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_METAL_TEXTURE_SLOT_COLLISION = 247
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_HLSL_REGISTER_T_COLLISION = 248
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_WGSL_GROUP1_BINDING_COLLISION = 249
SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_SPIRV_SET1_BINDING_COLLISION = 250
SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_METAL_SAMPLER_SLOT_COLLISION = 251
SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_HLSL_REGISTER_S_COLLISION = 252
SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_WGSL_GROUP1_BINDING_COLLISION = 253
SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_SPIRV_SET1_BINDING_COLLISION = 254
SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_VIEW_SLOT_OUT_OF_RANGE = 255
SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_SAMPLER_SLOT_OUT_OF_RANGE = 256
SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_TEXTURE_STAGE_MISMATCH = 257
SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_EXPECT_TEXTURE_VIEW = 258
SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_SAMPLER_STAGE_MISMATCH = 259
SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_GLSL_NAME = 260
SG_LOGITEM_VALIDATE_SHADERDESC_NONFILTERING_SAMPLER_REQUIRED = 261
SG_LOGITEM_VALIDATE_SHADERDESC_COMPARISON_SAMPLER_REQUIRED = 262
SG_LOGITEM_VALIDATE_SHADERDESC_TEXVIEW_NOT_REFERENCED_BY_TEXTURE_SAMPLER_PAIRS = 263
SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_NOT_REFERENCED_BY_TEXTURE_SAMPLER_PAIRS = 264
SG_LOGITEM_VALIDATE_SHADERDESC_ATTR_STRING_TOO_LONG = 265
SG_LOGITEM_VALIDATE_PIPELINEDESC_CANARY = 266
SG_LOGITEM_VALIDATE_PIPELINEDESC_SHADER = 267
SG_LOGITEM_VALIDATE_PIPELINEDESC_COMPUTE_SHADER_EXPECTED = 268
SG_LOGITEM_VALIDATE_PIPELINEDESC_NO_COMPUTE_SHADER_EXPECTED = 269
SG_LOGITEM_VALIDATE_PIPELINEDESC_NO_CONT_ATTRS = 270
SG_LOGITEM_VALIDATE_PIPELINEDESC_ATTR_BASETYPE_MISMATCH = 271
SG_LOGITEM_VALIDATE_PIPELINEDESC_LAYOUT_STRIDE4 = 272
SG_LOGITEM_VALIDATE_PIPELINEDESC_ATTR_SEMANTICS = 273
SG_LOGITEM_VALIDATE_PIPELINEDESC_SHADER_READONLY_STORAGEBUFFERS = 274
SG_LOGITEM_VALIDATE_PIPELINEDESC_BLENDOP_MINMAX_REQUIRES_BLENDFACTOR_ONE = 275
SG_LOGITEM_VALIDATE_PIPELINEDESC_DUAL_SOURCE_BLENDING_NOT_SUPPORTED = 276
SG_LOGITEM_VALIDATE_VIEWDESC_CANARY = 277
SG_LOGITEM_VALIDATE_VIEWDESC_UNIQUE_VIEWTYPE = 278
SG_LOGITEM_VALIDATE_VIEWDESC_ANY_VIEWTYPE = 279
SG_LOGITEM_VALIDATE_VIEWDESC_RESOURCE_ALIVE = 280
SG_LOGITEM_VALIDATE_VIEWDESC_RESOURCE_FAILED = 281
SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEBUFFER_OFFSET_VS_BUFFER_SIZE = 282
SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEBUFFER_OFFSET_MULTIPLE_256 = 283
SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEBUFFER_USAGE = 284
SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEIMAGE_USAGE = 285
SG_LOGITEM_VALIDATE_VIEWDESC_COLORATTACHMENT_USAGE = 286
SG_LOGITEM_VALIDATE_VIEWDESC_RESOLVEATTACHMENT_USAGE = 287
SG_LOGITEM_VALIDATE_VIEWDESC_DEPTHSTENCILATTACHMENT_USAGE = 288
SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_MIPLEVEL = 289
SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_2D_SLICE = 290
SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_CUBEMAP_SLICE = 291
SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_ARRAY_SLICE = 292
SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_3D_SLICE = 293
SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_EXPECT_NO_MSAA = 294
SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_MIPLEVELS = 295
SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_2D_SLICES = 296
SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_CUBEMAP_SLICES = 297
SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_ARRAY_SLICES = 298
SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_3D_SLICES = 299
SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEIMAGE_PIXELFORMAT = 300
SG_LOGITEM_VALIDATE_VIEWDESC_COLORATTACHMENT_PIXELFORMAT = 301
SG_LOGITEM_VALIDATE_VIEWDESC_DEPTHSTENCILATTACHMENT_PIXELFORMAT = 302
SG_LOGITEM_VALIDATE_VIEWDESC_RESOLVEATTACHMENT_SAMPLECOUNT = 303
SG_LOGITEM_VALIDATE_BEGINPASS_CANARY = 304
SG_LOGITEM_VALIDATE_BEGINPASS_COMPUTEPASS_EXPECT_NO_ATTACHMENTS = 305
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_WIDTH = 306
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_WIDTH_NOTSET = 307
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_HEIGHT = 308
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_HEIGHT_NOTSET = 309
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_SAMPLECOUNT = 310
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_SAMPLECOUNT_NOTSET = 311
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_COLORFORMAT = 312
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_COLORFORMAT_NOTSET = 313
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_DEPTHFORMAT_NOTSET = 314
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_CURRENTDRAWABLE = 315
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_CURRENTDRAWABLE_NOTSET = 316
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_DEPTHSTENCILTEXTURE = 317
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_DEPTHSTENCILTEXTURE_NOTSET = 318
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_MSAACOLORTEXTURE = 319
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_MSAACOLORTEXTURE_NOTSET = 320
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RENDERVIEW = 321
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RENDERVIEW_NOTSET = 322
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RESOLVEVIEW = 323
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RESOLVEVIEW_NOTSET = 324
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_DEPTHSTENCILVIEW = 325
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_DEPTHSTENCILVIEW_NOTSET = 326
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RENDERVIEW = 327
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RENDERVIEW_NOTSET = 328
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RESOLVEVIEW = 329
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RESOLVEVIEW_NOTSET = 330
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_DEPTHSTENCILVIEW = 331
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_DEPTHSTENCILVIEW_NOTSET = 332
SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_GL_EXPECT_FRAMEBUFFER_NOTSET = 333
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEWS_CONTINUOUS = 334
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_ALIVE = 335
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_VALID = 336
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_TYPE = 337
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_IMAGE_ALIVE = 338
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_IMAGE_VALID = 339
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_SIZES = 340
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_SAMPLECOUNT = 341
SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_SAMPLECOUNTS_EQUAL = 342
SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_NO_COLORATTACHMENTVIEW = 343
SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_ALIVE = 344
SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_VALID = 345
SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_TYPE = 346
SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_IMAGE_ALIVE = 347
SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_IMAGE_VALID = 348
SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_SIZES = 349
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEWS_CONTINUOUS = 350
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_ALIVE = 351
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_VALID = 352
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_TYPE = 353
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_IMAGE_ALIVE = 354
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_IMAGE_VALID = 355
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_SIZES = 356
SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_SAMPLECOUNT = 357
SG_LOGITEM_VALIDATE_BEGINPASS_ATTACHMENTS_EXPECTED = 358
SG_LOGITEM_VALIDATE_AVP_RENDERPASS_EXPECTED = 359
SG_LOGITEM_VALIDATE_ASR_RENDERPASS_EXPECTED = 360
SG_LOGITEM_VALIDATE_APIP_PIPELINE_VALID_ID = 361
SG_LOGITEM_VALIDATE_APIP_PIPELINE_EXISTS = 362
SG_LOGITEM_VALIDATE_APIP_PIPELINE_VALID = 363
SG_LOGITEM_VALIDATE_APIP_PASS_EXPECTED = 364
SG_LOGITEM_VALIDATE_APIP_PIPELINE_SHADER_ALIVE = 365
SG_LOGITEM_VALIDATE_APIP_PIPELINE_SHADER_VALID = 366
SG_LOGITEM_VALIDATE_APIP_COMPUTEPASS_EXPECTED = 367
SG_LOGITEM_VALIDATE_APIP_RENDERPASS_EXPECTED = 368
SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_COLOR_COUNT = 369
SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_COLOR_FORMAT = 370
SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_DEPTH_FORMAT = 371
SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_SAMPLE_COUNT = 372
SG_LOGITEM_VALIDATE_APIP_ATTACHMENTS_ALIVE = 373
SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_COUNT = 374
SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_VIEW_VALID = 375
SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_IMAGE_VALID = 376
SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_FORMAT = 377
SG_LOGITEM_VALIDATE_APIP_DEPTHSTENCILATTACHMENT_VIEW_VALID = 378
SG_LOGITEM_VALIDATE_APIP_DEPTHSTENCILATTACHMENT_IMAGE_VALID = 379
SG_LOGITEM_VALIDATE_APIP_DEPTHSTENCILATTACHMENT_FORMAT = 380
SG_LOGITEM_VALIDATE_APIP_ATTACHMENT_SAMPLE_COUNT = 381
SG_LOGITEM_VALIDATE_ABND_PASS_EXPECTED = 382
SG_LOGITEM_VALIDATE_ABND_EMPTY_BINDINGS = 383
SG_LOGITEM_VALIDATE_ABND_NO_PIPELINE = 384
SG_LOGITEM_VALIDATE_ABND_PIPELINE_ALIVE = 385
SG_LOGITEM_VALIDATE_ABND_PIPELINE_VALID = 386
SG_LOGITEM_VALIDATE_ABND_PIPELINE_SHADER_ALIVE = 387
SG_LOGITEM_VALIDATE_ABND_PIPELINE_SHADER_VALID = 388
SG_LOGITEM_VALIDATE_ABND_COMPUTE_EXPECTED_NO_VBUFS = 389
SG_LOGITEM_VALIDATE_ABND_COMPUTE_EXPECTED_NO_IBUF = 390
SG_LOGITEM_VALIDATE_ABND_EXPECTED_VBUF = 391
SG_LOGITEM_VALIDATE_ABND_VBUF_ALIVE = 392
SG_LOGITEM_VALIDATE_ABND_VBUF_USAGE = 393
SG_LOGITEM_VALIDATE_ABND_VBUF_OVERFLOW = 394
SG_LOGITEM_VALIDATE_ABND_EXPECTED_NO_IBUF = 395
SG_LOGITEM_VALIDATE_ABND_EXPECTED_IBUF = 396
SG_LOGITEM_VALIDATE_ABND_IBUF_ALIVE = 397
SG_LOGITEM_VALIDATE_ABND_IBUF_USAGE = 398
SG_LOGITEM_VALIDATE_ABND_IBUF_OVERFLOW = 399
SG_LOGITEM_VALIDATE_ABND_EXPECTED_VIEW_BINDING = 400
SG_LOGITEM_VALIDATE_ABND_VIEW_ALIVE = 401
SG_LOGITEM_VALIDATE_ABND_EXPECT_TEXVIEW = 402
SG_LOGITEM_VALIDATE_ABND_EXPECT_SBVIEW = 403
SG_LOGITEM_VALIDATE_ABND_EXPECT_SIMGVIEW = 404
SG_LOGITEM_VALIDATE_ABND_TEXVIEW_IMAGETYPE_MISMATCH = 405
SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_MULTISAMPLED_IMAGE = 406
SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_NON_MULTISAMPLED_IMAGE = 407
SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_FILTERABLE_IMAGE = 408
SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_DEPTH_IMAGE = 409
SG_LOGITEM_VALIDATE_ABND_SBVIEW_READWRITE_IMMUTABLE = 410
SG_LOGITEM_VALIDATE_ABND_SIMGVIEW_COMPUTE_PASS_EXPECTED = 411
SG_LOGITEM_VALIDATE_ABND_SIMGVIEW_IMAGETYPE_MISMATCH = 412
SG_LOGITEM_VALIDATE_ABND_SIMGVIEW_ACCESSFORMAT = 413
SG_LOGITEM_VALIDATE_ABND_EXPECTED_SAMPLER_BINDING = 414
SG_LOGITEM_VALIDATE_ABND_UNEXPECTED_SAMPLER_COMPARE_NEVER = 415
SG_LOGITEM_VALIDATE_ABND_EXPECTED_SAMPLER_COMPARE_NEVER = 416
SG_LOGITEM_VALIDATE_ABND_EXPECTED_NONFILTERING_SAMPLER = 417
SG_LOGITEM_VALIDATE_ABND_SAMPLER_ALIVE = 418
SG_LOGITEM_VALIDATE_ABND_SAMPLER_VALID = 419
SG_LOGITEM_VALIDATE_ABND_TEXTURE_BINDING_VS_DEPTHSTENCIL_ATTACHMENT = 420
SG_LOGITEM_VALIDATE_ABND_TEXTURE_BINDING_VS_COLOR_ATTACHMENT = 421
SG_LOGITEM_VALIDATE_ABND_TEXTURE_BINDING_VS_RESOLVE_ATTACHMENT = 422
SG_LOGITEM_VALIDATE_ABND_TEXTURE_VS_STORAGEIMAGE_BINDING = 423
SG_LOGITEM_VALIDATE_AU_PASS_EXPECTED = 424
SG_LOGITEM_VALIDATE_AU_NO_PIPELINE = 425
SG_LOGITEM_VALIDATE_AU_PIPELINE_ALIVE = 426
SG_LOGITEM_VALIDATE_AU_PIPELINE_VALID = 427
SG_LOGITEM_VALIDATE_AU_PIPELINE_SHADER_ALIVE = 428
SG_LOGITEM_VALIDATE_AU_PIPELINE_SHADER_VALID = 429
SG_LOGITEM_VALIDATE_AU_NO_UNIFORMBLOCK_AT_SLOT = 430
SG_LOGITEM_VALIDATE_AU_SIZE = 431
SG_LOGITEM_VALIDATE_DRAW_RENDERPASS_EXPECTED = 432
SG_LOGITEM_VALIDATE_DRAW_BASEELEMENT_GE_ZERO = 433
SG_LOGITEM_VALIDATE_DRAW_NUMELEMENTS_GE_ZERO = 434
SG_LOGITEM_VALIDATE_DRAW_NUMINSTANCES_GE_ZERO = 435
SG_LOGITEM_VALIDATE_DRAW_EX_RENDERPASS_EXPECTED = 436
SG_LOGITEM_VALIDATE_DRAW_EX_BASEELEMENT_GE_ZERO = 437
SG_LOGITEM_VALIDATE_DRAW_EX_NUMELEMENTS_GE_ZERO = 438
SG_LOGITEM_VALIDATE_DRAW_EX_NUMINSTANCES_GE_ZERO = 439
SG_LOGITEM_VALIDATE_DRAW_EX_BASEINSTANCE_GE_ZERO = 440
SG_LOGITEM_VALIDATE_DRAW_EX_BASEVERTEX_VS_INDEXED = 441
SG_LOGITEM_VALIDATE_DRAW_EX_BASEINSTANCE_VS_INSTANCED = 442
SG_LOGITEM_VALIDATE_DRAW_EX_BASEVERTEX_NOT_SUPPORTED = 443
SG_LOGITEM_VALIDATE_DRAW_EX_BASEINSTANCE_NOT_SUPPORTED = 444
SG_LOGITEM_VALIDATE_DRAW_REQUIRED_BINDINGS_OR_UNIFORMS_MISSING = 445
SG_LOGITEM_VALIDATE_DISPATCH_COMPUTEPASS_EXPECTED = 446
SG_LOGITEM_VALIDATE_DISPATCH_NUMGROUPSX = 447
SG_LOGITEM_VALIDATE_DISPATCH_NUMGROUPSY = 448
SG_LOGITEM_VALIDATE_DISPATCH_NUMGROUPSZ = 449
SG_LOGITEM_VALIDATE_DISPATCH_REQUIRED_BINDINGS_OR_UNIFORMS_MISSING = 450
SG_LOGITEM_VALIDATE_UPDATEBUF_USAGE = 451
SG_LOGITEM_VALIDATE_UPDATEBUF_SIZE = 452
SG_LOGITEM_VALIDATE_UPDATEBUF_ONCE = 453
SG_LOGITEM_VALIDATE_UPDATEBUF_APPEND = 454
SG_LOGITEM_VALIDATE_APPENDBUF_USAGE = 455
SG_LOGITEM_VALIDATE_APPENDBUF_SIZE = 456
SG_LOGITEM_VALIDATE_APPENDBUF_UPDATE = 457
SG_LOGITEM_VALIDATE_UPDIMG_USAGE = 458
SG_LOGITEM_VALIDATE_UPDIMG_ONCE = 459
SG_LOGITEM_VALIDATION_FAILED = 460

# enum (unnamed at C:\skbuild\myown\sokol-py\generator\sokol_headers\sokol_gfx.h:6152:1)
_SG_STRING_SIZE = 32
_SG_SLOT_SHIFT = 16
_SG_SLOT_MASK = 65535
_SG_MAX_POOL_SIZE = 65536
_SG_DEFAULT_BUFFER_POOL_SIZE = 128
_SG_DEFAULT_IMAGE_POOL_SIZE = 128
_SG_DEFAULT_SAMPLER_POOL_SIZE = 64
_SG_DEFAULT_SHADER_POOL_SIZE = 32
_SG_DEFAULT_PIPELINE_POOL_SIZE = 64
_SG_DEFAULT_VIEW_POOL_SIZE = 256
_SG_DEFAULT_UB_SIZE = 4194304
_SG_DEFAULT_MAX_COMMIT_LISTENERS = 1024
_SG_DEFAULT_WGPU_BINDGROUP_CACHE_SIZE = 1024
_SG_DEFAULT_VK_COPY_STAGING_SIZE = 4194304
_SG_DEFAULT_VK_STREAM_STAGING_SIZE = 16777216
_SG_DEFAULT_VK_DESCRIPTOR_BUFFER_SIZE = 16777216
_SG_MAX_STORAGEBUFFER_BINDINGS_PER_STAGE = 32
_SG_MAX_STORAGEIMAGE_BINDINGS_PER_STAGE = 32
_SG_MAX_TEXTURE_BINDINGS_PER_STAGE = 32
_SG_MAX_UNIFORMBLOCK_BINDINGS_PER_STAGE = 8

# enum (unnamed at C:\skbuild\myown\sokol-py\generator\sokol_headers\sokol_app.h:1361:1)
SAPP_MAX_TOUCHPOINTS = 8
SAPP_MAX_MOUSEBUTTONS = 3
SAPP_MAX_KEYCODES = 512
SAPP_MAX_ICONIMAGES = 8

# sapp_event_type
SAPP_EVENTTYPE_INVALID = 0
SAPP_EVENTTYPE_KEY_DOWN = 1
SAPP_EVENTTYPE_KEY_UP = 2
SAPP_EVENTTYPE_CHAR = 3
SAPP_EVENTTYPE_MOUSE_DOWN = 4
SAPP_EVENTTYPE_MOUSE_UP = 5
SAPP_EVENTTYPE_MOUSE_SCROLL = 6
SAPP_EVENTTYPE_MOUSE_MOVE = 7
SAPP_EVENTTYPE_MOUSE_ENTER = 8
SAPP_EVENTTYPE_MOUSE_LEAVE = 9
SAPP_EVENTTYPE_TOUCHES_BEGAN = 10
SAPP_EVENTTYPE_TOUCHES_MOVED = 11
SAPP_EVENTTYPE_TOUCHES_ENDED = 12
SAPP_EVENTTYPE_TOUCHES_CANCELLED = 13
SAPP_EVENTTYPE_RESIZED = 14
SAPP_EVENTTYPE_ICONIFIED = 15
SAPP_EVENTTYPE_RESTORED = 16
SAPP_EVENTTYPE_FOCUSED = 17
SAPP_EVENTTYPE_UNFOCUSED = 18
SAPP_EVENTTYPE_SUSPENDED = 19
SAPP_EVENTTYPE_RESUMED = 20
SAPP_EVENTTYPE_QUIT_REQUESTED = 21
SAPP_EVENTTYPE_CLIPBOARD_PASTED = 22
SAPP_EVENTTYPE_FILES_DROPPED = 23
_SAPP_EVENTTYPE_NUM = 24
_SAPP_EVENTTYPE_FORCE_U32 = 2147483647

# sapp_keycode
SAPP_KEYCODE_INVALID = 0
SAPP_KEYCODE_SPACE = 32
SAPP_KEYCODE_APOSTROPHE = 39
SAPP_KEYCODE_COMMA = 44
SAPP_KEYCODE_MINUS = 45
SAPP_KEYCODE_PERIOD = 46
SAPP_KEYCODE_SLASH = 47
SAPP_KEYCODE_0 = 48
SAPP_KEYCODE_1 = 49
SAPP_KEYCODE_2 = 50
SAPP_KEYCODE_3 = 51
SAPP_KEYCODE_4 = 52
SAPP_KEYCODE_5 = 53
SAPP_KEYCODE_6 = 54
SAPP_KEYCODE_7 = 55
SAPP_KEYCODE_8 = 56
SAPP_KEYCODE_9 = 57
SAPP_KEYCODE_SEMICOLON = 59
SAPP_KEYCODE_EQUAL = 61
SAPP_KEYCODE_A = 65
SAPP_KEYCODE_B = 66
SAPP_KEYCODE_C = 67
SAPP_KEYCODE_D = 68
SAPP_KEYCODE_E = 69
SAPP_KEYCODE_F = 70
SAPP_KEYCODE_G = 71
SAPP_KEYCODE_H = 72
SAPP_KEYCODE_I = 73
SAPP_KEYCODE_J = 74
SAPP_KEYCODE_K = 75
SAPP_KEYCODE_L = 76
SAPP_KEYCODE_M = 77
SAPP_KEYCODE_N = 78
SAPP_KEYCODE_O = 79
SAPP_KEYCODE_P = 80
SAPP_KEYCODE_Q = 81
SAPP_KEYCODE_R = 82
SAPP_KEYCODE_S = 83
SAPP_KEYCODE_T = 84
SAPP_KEYCODE_U = 85
SAPP_KEYCODE_V = 86
SAPP_KEYCODE_W = 87
SAPP_KEYCODE_X = 88
SAPP_KEYCODE_Y = 89
SAPP_KEYCODE_Z = 90
SAPP_KEYCODE_LEFT_BRACKET = 91
SAPP_KEYCODE_BACKSLASH = 92
SAPP_KEYCODE_RIGHT_BRACKET = 93
SAPP_KEYCODE_GRAVE_ACCENT = 96
SAPP_KEYCODE_WORLD_1 = 161
SAPP_KEYCODE_WORLD_2 = 162
SAPP_KEYCODE_ESCAPE = 256
SAPP_KEYCODE_ENTER = 257
SAPP_KEYCODE_TAB = 258
SAPP_KEYCODE_BACKSPACE = 259
SAPP_KEYCODE_INSERT = 260
SAPP_KEYCODE_DELETE = 261
SAPP_KEYCODE_RIGHT = 262
SAPP_KEYCODE_LEFT = 263
SAPP_KEYCODE_DOWN = 264
SAPP_KEYCODE_UP = 265
SAPP_KEYCODE_PAGE_UP = 266
SAPP_KEYCODE_PAGE_DOWN = 267
SAPP_KEYCODE_HOME = 268
SAPP_KEYCODE_END = 269
SAPP_KEYCODE_CAPS_LOCK = 280
SAPP_KEYCODE_SCROLL_LOCK = 281
SAPP_KEYCODE_NUM_LOCK = 282
SAPP_KEYCODE_PRINT_SCREEN = 283
SAPP_KEYCODE_PAUSE = 284
SAPP_KEYCODE_F1 = 290
SAPP_KEYCODE_F2 = 291
SAPP_KEYCODE_F3 = 292
SAPP_KEYCODE_F4 = 293
SAPP_KEYCODE_F5 = 294
SAPP_KEYCODE_F6 = 295
SAPP_KEYCODE_F7 = 296
SAPP_KEYCODE_F8 = 297
SAPP_KEYCODE_F9 = 298
SAPP_KEYCODE_F10 = 299
SAPP_KEYCODE_F11 = 300
SAPP_KEYCODE_F12 = 301
SAPP_KEYCODE_F13 = 302
SAPP_KEYCODE_F14 = 303
SAPP_KEYCODE_F15 = 304
SAPP_KEYCODE_F16 = 305
SAPP_KEYCODE_F17 = 306
SAPP_KEYCODE_F18 = 307
SAPP_KEYCODE_F19 = 308
SAPP_KEYCODE_F20 = 309
SAPP_KEYCODE_F21 = 310
SAPP_KEYCODE_F22 = 311
SAPP_KEYCODE_F23 = 312
SAPP_KEYCODE_F24 = 313
SAPP_KEYCODE_F25 = 314
SAPP_KEYCODE_KP_0 = 320
SAPP_KEYCODE_KP_1 = 321
SAPP_KEYCODE_KP_2 = 322
SAPP_KEYCODE_KP_3 = 323
SAPP_KEYCODE_KP_4 = 324
SAPP_KEYCODE_KP_5 = 325
SAPP_KEYCODE_KP_6 = 326
SAPP_KEYCODE_KP_7 = 327
SAPP_KEYCODE_KP_8 = 328
SAPP_KEYCODE_KP_9 = 329
SAPP_KEYCODE_KP_DECIMAL = 330
SAPP_KEYCODE_KP_DIVIDE = 331
SAPP_KEYCODE_KP_MULTIPLY = 332
SAPP_KEYCODE_KP_SUBTRACT = 333
SAPP_KEYCODE_KP_ADD = 334
SAPP_KEYCODE_KP_ENTER = 335
SAPP_KEYCODE_KP_EQUAL = 336
SAPP_KEYCODE_LEFT_SHIFT = 340
SAPP_KEYCODE_LEFT_CONTROL = 341
SAPP_KEYCODE_LEFT_ALT = 342
SAPP_KEYCODE_LEFT_SUPER = 343
SAPP_KEYCODE_RIGHT_SHIFT = 344
SAPP_KEYCODE_RIGHT_CONTROL = 345
SAPP_KEYCODE_RIGHT_ALT = 346
SAPP_KEYCODE_RIGHT_SUPER = 347
SAPP_KEYCODE_MENU = 348

# sapp_android_tooltype
SAPP_ANDROIDTOOLTYPE_UNKNOWN = 0
SAPP_ANDROIDTOOLTYPE_FINGER = 1
SAPP_ANDROIDTOOLTYPE_STYLUS = 2
SAPP_ANDROIDTOOLTYPE_MOUSE = 3

# sapp_mousebutton
SAPP_MOUSEBUTTON_LEFT = 0
SAPP_MOUSEBUTTON_RIGHT = 1
SAPP_MOUSEBUTTON_MIDDLE = 2
SAPP_MOUSEBUTTON_INVALID = 256

# enum (unnamed at C:\skbuild\myown\sokol-py\generator\sokol_headers\sokol_app.h:1588:1)
SAPP_MODIFIER_SHIFT = 1
SAPP_MODIFIER_CTRL = 2
SAPP_MODIFIER_ALT = 4
SAPP_MODIFIER_SUPER = 8
SAPP_MODIFIER_LMB = 256
SAPP_MODIFIER_RMB = 512
SAPP_MODIFIER_MMB = 1024

# sapp_log_item
SAPP_LOGITEM_OK = 0
SAPP_LOGITEM_MALLOC_FAILED = 1
SAPP_LOGITEM_MACOS_INVALID_NSOPENGL_PROFILE = 2
SAPP_LOGITEM_WIN32_LOAD_OPENGL32_DLL_FAILED = 3
SAPP_LOGITEM_WIN32_CREATE_HELPER_WINDOW_FAILED = 4
SAPP_LOGITEM_WIN32_HELPER_WINDOW_GETDC_FAILED = 5
SAPP_LOGITEM_WIN32_DUMMY_CONTEXT_SET_PIXELFORMAT_FAILED = 6
SAPP_LOGITEM_WIN32_CREATE_DUMMY_CONTEXT_FAILED = 7
SAPP_LOGITEM_WIN32_DUMMY_CONTEXT_MAKE_CURRENT_FAILED = 8
SAPP_LOGITEM_WIN32_GET_PIXELFORMAT_ATTRIB_FAILED = 9
SAPP_LOGITEM_WIN32_WGL_FIND_PIXELFORMAT_FAILED = 10
SAPP_LOGITEM_WIN32_WGL_DESCRIBE_PIXELFORMAT_FAILED = 11
SAPP_LOGITEM_WIN32_WGL_SET_PIXELFORMAT_FAILED = 12
SAPP_LOGITEM_WIN32_WGL_ARB_CREATE_CONTEXT_REQUIRED = 13
SAPP_LOGITEM_WIN32_WGL_ARB_CREATE_CONTEXT_PROFILE_REQUIRED = 14
SAPP_LOGITEM_WIN32_WGL_OPENGL_VERSION_NOT_SUPPORTED = 15
SAPP_LOGITEM_WIN32_WGL_OPENGL_PROFILE_NOT_SUPPORTED = 16
SAPP_LOGITEM_WIN32_WGL_INCOMPATIBLE_DEVICE_CONTEXT = 17
SAPP_LOGITEM_WIN32_WGL_CREATE_CONTEXT_ATTRIBS_FAILED_OTHER = 18
SAPP_LOGITEM_WIN32_D3D11_CREATE_DEVICE_AND_SWAPCHAIN_WITH_DEBUG_FAILED = 19
SAPP_LOGITEM_WIN32_D3D11_GET_IDXGIFACTORY_FAILED = 20
SAPP_LOGITEM_WIN32_D3D11_GET_IDXGIADAPTER_FAILED = 21
SAPP_LOGITEM_WIN32_D3D11_QUERY_INTERFACE_IDXGIDEVICE1_FAILED = 22
SAPP_LOGITEM_WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_LOCK = 23
SAPP_LOGITEM_WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_UNLOCK = 24
SAPP_LOGITEM_WIN32_GET_RAW_INPUT_DATA_FAILED = 25
SAPP_LOGITEM_WIN32_DESTROYICON_FOR_CURSOR_FAILED = 26
SAPP_LOGITEM_LINUX_GLX_LOAD_LIBGL_FAILED = 27
SAPP_LOGITEM_LINUX_GLX_LOAD_ENTRY_POINTS_FAILED = 28
SAPP_LOGITEM_LINUX_GLX_EXTENSION_NOT_FOUND = 29
SAPP_LOGITEM_LINUX_GLX_QUERY_VERSION_FAILED = 30
SAPP_LOGITEM_LINUX_GLX_VERSION_TOO_LOW = 31
SAPP_LOGITEM_LINUX_GLX_NO_GLXFBCONFIGS = 32
SAPP_LOGITEM_LINUX_GLX_NO_SUITABLE_GLXFBCONFIG = 33
SAPP_LOGITEM_LINUX_GLX_GET_VISUAL_FROM_FBCONFIG_FAILED = 34
SAPP_LOGITEM_LINUX_GLX_REQUIRED_EXTENSIONS_MISSING = 35
SAPP_LOGITEM_LINUX_GLX_CREATE_CONTEXT_FAILED = 36
SAPP_LOGITEM_LINUX_GLX_CREATE_WINDOW_FAILED = 37
SAPP_LOGITEM_LINUX_X11_CREATE_WINDOW_FAILED = 38
SAPP_LOGITEM_LINUX_EGL_BIND_OPENGL_API_FAILED = 39
SAPP_LOGITEM_LINUX_EGL_BIND_OPENGL_ES_API_FAILED = 40
SAPP_LOGITEM_LINUX_EGL_GET_DISPLAY_FAILED = 41
SAPP_LOGITEM_LINUX_EGL_INITIALIZE_FAILED = 42
SAPP_LOGITEM_LINUX_EGL_NO_CONFIGS = 43
SAPP_LOGITEM_LINUX_EGL_NO_NATIVE_VISUAL = 44
SAPP_LOGITEM_LINUX_EGL_GET_VISUAL_INFO_FAILED = 45
SAPP_LOGITEM_LINUX_EGL_CREATE_WINDOW_SURFACE_FAILED = 46
SAPP_LOGITEM_LINUX_EGL_CREATE_CONTEXT_FAILED = 47
SAPP_LOGITEM_LINUX_EGL_MAKE_CURRENT_FAILED = 48
SAPP_LOGITEM_LINUX_X11_OPEN_DISPLAY_FAILED = 49
SAPP_LOGITEM_LINUX_X11_QUERY_SYSTEM_DPI_FAILED = 50
SAPP_LOGITEM_LINUX_X11_DROPPED_FILE_URI_WRONG_SCHEME = 51
SAPP_LOGITEM_LINUX_X11_FAILED_TO_BECOME_OWNER_OF_CLIPBOARD = 52
SAPP_LOGITEM_ANDROID_UNSUPPORTED_INPUT_EVENT_INPUT_CB = 53
SAPP_LOGITEM_ANDROID_UNSUPPORTED_INPUT_EVENT_MAIN_CB = 54
SAPP_LOGITEM_ANDROID_READ_MSG_FAILED = 55
SAPP_LOGITEM_ANDROID_WRITE_MSG_FAILED = 56
SAPP_LOGITEM_ANDROID_MSG_CREATE = 57
SAPP_LOGITEM_ANDROID_MSG_RESUME = 58
SAPP_LOGITEM_ANDROID_MSG_PAUSE = 59
SAPP_LOGITEM_ANDROID_MSG_FOCUS = 60
SAPP_LOGITEM_ANDROID_MSG_NO_FOCUS = 61
SAPP_LOGITEM_ANDROID_MSG_SET_NATIVE_WINDOW = 62
SAPP_LOGITEM_ANDROID_MSG_SET_INPUT_QUEUE = 63
SAPP_LOGITEM_ANDROID_MSG_DESTROY = 64
SAPP_LOGITEM_ANDROID_UNKNOWN_MSG = 65
SAPP_LOGITEM_ANDROID_LOOP_THREAD_STARTED = 66
SAPP_LOGITEM_ANDROID_LOOP_THREAD_DONE = 67
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONSTART = 68
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONRESUME = 69
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONSAVEINSTANCESTATE = 70
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONWINDOWFOCUSCHANGED = 71
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONPAUSE = 72
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONSTOP = 73
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWCREATED = 74
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWDESTROYED = 75
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUECREATED = 76
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUEDESTROYED = 77
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONCONFIGURATIONCHANGED = 78
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONLOWMEMORY = 79
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONDESTROY = 80
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_DONE = 81
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONCREATE = 82
SAPP_LOGITEM_ANDROID_CREATE_THREAD_PIPE_FAILED = 83
SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_CREATE_SUCCESS = 84
SAPP_LOGITEM_WGPU_DEVICE_LOST = 85
SAPP_LOGITEM_WGPU_DEVICE_LOG = 86
SAPP_LOGITEM_WGPU_DEVICE_UNCAPTURED_ERROR = 87
SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_SURFACE_FAILED = 88
SAPP_LOGITEM_WGPU_SWAPCHAIN_SURFACE_GET_CAPABILITIES_FAILED = 89
SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_DEPTH_STENCIL_TEXTURE_FAILED = 90
SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_DEPTH_STENCIL_VIEW_FAILED = 91
SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_MSAA_TEXTURE_FAILED = 92
SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_MSAA_VIEW_FAILED = 93
SAPP_LOGITEM_WGPU_SWAPCHAIN_GETCURRENTTEXTURE_FAILED = 94
SAPP_LOGITEM_WGPU_REQUEST_DEVICE_STATUS_ERROR = 95
SAPP_LOGITEM_WGPU_REQUEST_DEVICE_STATUS_UNKNOWN = 96
SAPP_LOGITEM_WGPU_REQUEST_ADAPTER_STATUS_UNAVAILABLE = 97
SAPP_LOGITEM_WGPU_REQUEST_ADAPTER_STATUS_ERROR = 98
SAPP_LOGITEM_WGPU_REQUEST_ADAPTER_STATUS_UNKNOWN = 99
SAPP_LOGITEM_WGPU_CREATE_INSTANCE_FAILED = 100
SAPP_LOGITEM_VULKAN_REQUIRED_INSTANCE_EXTENSION_FUNCTION_MISSING = 101
SAPP_LOGITEM_VULKAN_ALLOC_DEVICE_MEMORY_NO_SUITABLE_MEMORY_TYPE = 102
SAPP_LOGITEM_VULKAN_ALLOCATE_MEMORY_FAILED = 103
SAPP_LOGITEM_VULKAN_CREATE_INSTANCE_FAILED = 104
SAPP_LOGITEM_VULKAN_ENUMERATE_PHYSICAL_DEVICES_FAILED = 105
SAPP_LOGITEM_VULKAN_NO_PHYSICAL_DEVICES_FOUND = 106
SAPP_LOGITEM_VULKAN_NO_SUITABLE_PHYSICAL_DEVICE_FOUND = 107
SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_EXTENSION_NOT_PRESENT = 108
SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_FEATURE_NOT_PRESENT = 109
SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_INITIALIZATION_FAILED = 110
SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_OTHER = 111
SAPP_LOGITEM_VULKAN_CREATE_SURFACE_FAILED = 112
SAPP_LOGITEM_VULKAN_CREATE_SWAPCHAIN_FAILED = 113
SAPP_LOGITEM_VULKAN_SWAPCHAIN_CREATE_IMAGE_VIEW_FAILED = 114
SAPP_LOGITEM_VULKAN_SWAPCHAIN_CREATE_IMAGE_FAILED = 115
SAPP_LOGITEM_VULKAN_SWAPCHAIN_ALLOC_IMAGE_DEVICE_MEMORY_FAILED = 116
SAPP_LOGITEM_VULKAN_SWAPCHAIN_BIND_IMAGE_MEMORY_FAILED = 117
SAPP_LOGITEM_VULKAN_ACQUIRE_NEXT_IMAGE_FAILED = 118
SAPP_LOGITEM_VULKAN_QUEUE_PRESENT_FAILED = 119
SAPP_LOGITEM_IMAGE_DATA_SIZE_MISMATCH = 120
SAPP_LOGITEM_DROPPED_FILE_PATH_TOO_LONG = 121
SAPP_LOGITEM_CLIPBOARD_STRING_TOO_BIG = 122

# sapp_pixel_format
_SAPP_PIXELFORMAT_DEFAULT = 0
SAPP_PIXELFORMAT_NONE = 1
SAPP_PIXELFORMAT_RGBA8 = 2
SAPP_PIXELFORMAT_SRGB8A8 = 3
SAPP_PIXELFORMAT_BGRA8 = 4
SAPP_PIXELFORMAT_SBGRA8 = 5
SAPP_PIXELFORMAT_DEPTH = 6
SAPP_PIXELFORMAT_DEPTH_STENCIL = 7
_SA_PPPIXELFORMAT_FORCE_U32 = 2147483647

# sapp_html5_fetch_error
SAPP_HTML5_FETCH_ERROR_NO_ERROR = 0
SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL = 1
SAPP_HTML5_FETCH_ERROR_OTHER = 2

# sapp_mouse_cursor
SAPP_MOUSECURSOR_DEFAULT = 0
SAPP_MOUSECURSOR_ARROW = 1
SAPP_MOUSECURSOR_IBEAM = 2
SAPP_MOUSECURSOR_CROSSHAIR = 3
SAPP_MOUSECURSOR_POINTING_HAND = 4
SAPP_MOUSECURSOR_RESIZE_EW = 5
SAPP_MOUSECURSOR_RESIZE_NS = 6
SAPP_MOUSECURSOR_RESIZE_NWSE = 7
SAPP_MOUSECURSOR_RESIZE_NESW = 8
SAPP_MOUSECURSOR_RESIZE_ALL = 9
SAPP_MOUSECURSOR_NOT_ALLOWED = 10
SAPP_MOUSECURSOR_CUSTOM_0 = 11
SAPP_MOUSECURSOR_CUSTOM_1 = 12
SAPP_MOUSECURSOR_CUSTOM_2 = 13
SAPP_MOUSECURSOR_CUSTOM_3 = 14
SAPP_MOUSECURSOR_CUSTOM_4 = 15
SAPP_MOUSECURSOR_CUSTOM_5 = 16
SAPP_MOUSECURSOR_CUSTOM_6 = 17
SAPP_MOUSECURSOR_CUSTOM_7 = 18
SAPP_MOUSECURSOR_CUSTOM_8 = 19
SAPP_MOUSECURSOR_CUSTOM_9 = 20
SAPP_MOUSECURSOR_CUSTOM_10 = 21
SAPP_MOUSECURSOR_CUSTOM_11 = 22
SAPP_MOUSECURSOR_CUSTOM_12 = 23
SAPP_MOUSECURSOR_CUSTOM_13 = 24
SAPP_MOUSECURSOR_CUSTOM_14 = 25
SAPP_MOUSECURSOR_CUSTOM_15 = 26
_SAPP_MOUSECURSOR_NUM = 27

# PROCESS_DPI_AWARENESS
PROCESS_DPI_UNAWARE = 0
PROCESS_SYSTEM_DPI_AWARE = 1
PROCESS_PER_MONITOR_DPI_AWARE = 2

# MONITOR_DPI_TYPE
MDT_EFFECTIVE_DPI = 0
MDT_ANGULAR_DPI = 1
MDT_RAW_DPI = 2
MDT_DEFAULT = 0

# =============================================================================
# Forward Declarations
# =============================================================================

class sg_buffer(Structure): pass
class sg_image(Structure): pass
class sg_sampler(Structure): pass
class sg_shader(Structure): pass
class sg_pipeline(Structure): pass
class sg_view(Structure): pass
class sg_range(Structure): pass
class sg_color(Structure): pass
class sg_pixelformat_info(Structure): pass
class sg_features(Structure): pass
class sg_limits(Structure): pass
class sg_color_attachment_action(Structure): pass
class sg_depth_attachment_action(Structure): pass
class sg_stencil_attachment_action(Structure): pass
class sg_pass_action(Structure): pass
class sg_metal_swapchain(Structure): pass
class sg_d3d11_swapchain(Structure): pass
class sg_wgpu_swapchain(Structure): pass
class sg_vulkan_swapchain(Structure): pass
class sg_gl_swapchain(Structure): pass
class sg_swapchain(Structure): pass
class sg_attachments(Structure): pass
class sg_pass(Structure): pass
class sg_bindings(Structure): pass
class sg_buffer_usage(Structure): pass
class sg_buffer_desc(Structure): pass
class sg_image_usage(Structure): pass
class sg_image_data(Structure): pass
class sg_image_desc(Structure): pass
class sg_sampler_desc(Structure): pass
class sg_shader_function(Structure): pass
class sg_shader_vertex_attr(Structure): pass
class sg_glsl_shader_uniform(Structure): pass
class sg_shader_uniform_block(Structure): pass
class sg_shader_texture_view(Structure): pass
class sg_shader_storage_buffer_view(Structure): pass
class sg_shader_storage_image_view(Structure): pass
class sg_shader_view(Structure): pass
class sg_shader_sampler(Structure): pass
class sg_shader_texture_sampler_pair(Structure): pass
class sg_mtl_shader_threads_per_threadgroup(Structure): pass
class sg_shader_desc(Structure): pass
class sg_vertex_buffer_layout_state(Structure): pass
class sg_vertex_attr_state(Structure): pass
class sg_vertex_layout_state(Structure): pass
class sg_stencil_face_state(Structure): pass
class sg_stencil_state(Structure): pass
class sg_depth_state(Structure): pass
class sg_blend_state(Structure): pass
class sg_color_target_state(Structure): pass
class sg_pipeline_desc(Structure): pass
class sg_buffer_view_desc(Structure): pass
class sg_image_view_desc(Structure): pass
class sg_texture_view_range(Structure): pass
class sg_texture_view_desc(Structure): pass
class sg_view_desc(Structure): pass
class sg_trace_hooks(Structure): pass
class sg_slot_info(Structure): pass
class sg_buffer_info(Structure): pass
class sg_image_info(Structure): pass
class sg_sampler_info(Structure): pass
class sg_shader_info(Structure): pass
class sg_pipeline_info(Structure): pass
class sg_view_info(Structure): pass
class sg_frame_stats_gl(Structure): pass
class sg_frame_stats_d3d11_pass(Structure): pass
class sg_frame_stats_d3d11_pipeline(Structure): pass
class sg_frame_stats_d3d11_bindings(Structure): pass
class sg_frame_stats_d3d11_uniforms(Structure): pass
class sg_frame_stats_d3d11_draw(Structure): pass
class sg_frame_stats_d3d11(Structure): pass
class sg_frame_stats_metal_idpool(Structure): pass
class sg_frame_stats_metal_pipeline(Structure): pass
class sg_frame_stats_metal_bindings(Structure): pass
class sg_frame_stats_metal_uniforms(Structure): pass
class sg_frame_stats_metal(Structure): pass
class sg_frame_stats_wgpu_uniforms(Structure): pass
class sg_frame_stats_wgpu_bindings(Structure): pass
class sg_frame_stats_wgpu(Structure): pass
class sg_frame_stats_vk(Structure): pass
class sg_frame_resource_stats(Structure): pass
class sg_total_resource_stats(Structure): pass
class sg_total_stats(Structure): pass
class sg_frame_stats(Structure): pass
class sg_stats(Structure): pass
class sg_environment_defaults(Structure): pass
class sg_metal_environment(Structure): pass
class sg_d3d11_environment(Structure): pass
class sg_wgpu_environment(Structure): pass
class sg_vulkan_environment(Structure): pass
class sg_environment(Structure): pass
class sg_commit_listener(Structure): pass
class sg_allocator(Structure): pass
class sg_logger(Structure): pass
class sg_d3d11_desc(Structure): pass
class sg_metal_desc(Structure): pass
class sg_wgpu_desc(Structure): pass
class sg_vulkan_desc(Structure): pass
class sg_desc(Structure): pass
class sg_d3d11_buffer_info(Structure): pass
class sg_d3d11_image_info(Structure): pass
class sg_d3d11_sampler_info(Structure): pass
class sg_d3d11_shader_info(Structure): pass
class sg_d3d11_pipeline_info(Structure): pass
class sg_d3d11_view_info(Structure): pass
class sg_mtl_buffer_info(Structure): pass
class sg_mtl_image_info(Structure): pass
class sg_mtl_sampler_info(Structure): pass
class sg_mtl_shader_info(Structure): pass
class sg_mtl_pipeline_info(Structure): pass
class sg_wgpu_buffer_info(Structure): pass
class sg_wgpu_image_info(Structure): pass
class sg_wgpu_sampler_info(Structure): pass
class sg_wgpu_shader_info(Structure): pass
class sg_wgpu_pipeline_info(Structure): pass
class sg_wgpu_view_info(Structure): pass
class sg_gl_buffer_info(Structure): pass
class sg_gl_image_info(Structure): pass
class sg_gl_sampler_info(Structure): pass
class sg_gl_shader_info(Structure): pass
class sg_gl_view_info(Structure): pass
class _sg_recti_t(Structure): pass
class _sg_dimi_t(Structure): pass
class _sg_slot_t(Structure): pass
class _sg_pool_t(Structure): pass
class _sg_track_t(Structure): pass
class _sg_sref_s(Structure): pass
class _sg_buffer_ref_s(Structure): pass
class _sg_image_ref_s(Structure): pass
class _sg_sampler_ref_t(Structure): pass
class _sg_shader_ref_s(Structure): pass
class _sg_pipeline_ref_s(Structure): pass
class _sg_view_ref_s(Structure): pass
class _sg_str_t(Structure): pass
class _sg_buffer_common_t(Structure): pass
class _sg_image_common_t(Structure): pass
class _sg_sampler_common_t(Structure): pass
class _sg_shader_attr_t(Structure): pass
class _sg_shader_uniform_block_t(Structure): pass
class _sg_shader_view_t(Structure): pass
class _sg_shader_sampler_t(Structure): pass
class _sg_shader_texture_sampler_t(Structure): pass
class _sg_shader_common_t(Structure): pass
class _sg_pipeline_common_t(Structure): pass
class _sg_buffer_view_common_t(Structure): pass
class _sg_image_view_common_t(Structure): pass
class _sg_view_common_t(Structure): pass
class _sg_buffer_s(Structure): pass
class _sg_image_s(Structure): pass
class _sg_sampler_s(Structure): pass
class _sg_d3d11_shader_attr_t(Structure): pass
class _sg_shader_s(Structure): pass
class _sg_pipeline_s(Structure): pass
class _sg_view_s(Structure): pass
class _sg_d3d11_backend_t(Structure): pass
class _sg_pools_s(Structure): pass
class _sg_commit_listeners_t(Structure): pass
class _sg_attachments_ptrs_t(Structure): pass
class _sg_bindings_ptrs_t(Structure): pass
class _sg_pixelformat_info_t(Structure): pass
class _sg_state_t(Structure): pass
class _sg_u128_t(Structure): pass
class sapp_touchpoint(Structure): pass
class sapp_event(Structure): pass
class sapp_range(Structure): pass
class sapp_image_desc(Structure): pass
class sapp_icon_desc(Structure): pass
class sapp_allocator(Structure): pass
class sapp_environment_defaults(Structure): pass
class sapp_metal_environment(Structure): pass
class sapp_d3d11_environment(Structure): pass
class sapp_wgpu_environment(Structure): pass
class sapp_vulkan_environment(Structure): pass
class sapp_environment(Structure): pass
class sapp_metal_swapchain(Structure): pass
class sapp_d3d11_swapchain(Structure): pass
class sapp_wgpu_swapchain(Structure): pass
class sapp_vulkan_swapchain(Structure): pass
class sapp_gl_swapchain(Structure): pass
class sapp_swapchain(Structure): pass
class sapp_logger(Structure): pass
class sapp_gl_desc(Structure): pass
class sapp_win32_desc(Structure): pass
class sapp_html5_desc(Structure): pass
class sapp_ios_desc(Structure): pass
class sapp_desc(Structure): pass
class sapp_html5_fetch_response(Structure): pass
class sapp_html5_fetch_request(Structure): pass
class _sapp_ring_t(Structure): pass
class _sapp_timestamp_t(Structure): pass
class _sapp_timing_t(Structure): pass
class _sapp_d3d11_t(Structure): pass
class _sapp_win32_dpi_t(Structure): pass
class _sapp_win32_t(Structure): pass
class _sapp_clipboard_t(Structure): pass
class _sapp_drop_t(Structure): pass
class _sapp_mouse_t(Structure): pass
class _sapp_t(Structure): pass
class DPI_AWARENESS_CONTEXT_T__(Structure): pass

# =============================================================================
# Function Pointer Types
# =============================================================================

_FuncPtr_reset_state_cache = CFUNCTYPE(None, c_void_p)
_FuncPtr_make_buffer = CFUNCTYPE(None, POINTER(sg_buffer_desc), sg_buffer, c_void_p)
_FuncPtr_make_image = CFUNCTYPE(None, POINTER(sg_image_desc), sg_image, c_void_p)
_FuncPtr_make_sampler = CFUNCTYPE(None, POINTER(sg_sampler_desc), sg_sampler, c_void_p)
_FuncPtr_make_shader = CFUNCTYPE(None, POINTER(sg_shader_desc), sg_shader, c_void_p)
_FuncPtr_make_pipeline = CFUNCTYPE(None, POINTER(sg_pipeline_desc), sg_pipeline, c_void_p)
_FuncPtr_make_view = CFUNCTYPE(None, POINTER(sg_view_desc), sg_view, c_void_p)
_FuncPtr_destroy_buffer = CFUNCTYPE(None, sg_buffer, c_void_p)
_FuncPtr_destroy_image = CFUNCTYPE(None, sg_image, c_void_p)
_FuncPtr_destroy_sampler = CFUNCTYPE(None, sg_sampler, c_void_p)
_FuncPtr_destroy_shader = CFUNCTYPE(None, sg_shader, c_void_p)
_FuncPtr_destroy_pipeline = CFUNCTYPE(None, sg_pipeline, c_void_p)
_FuncPtr_destroy_view = CFUNCTYPE(None, sg_view, c_void_p)
_FuncPtr_update_buffer = CFUNCTYPE(None, sg_buffer, POINTER(sg_range), c_void_p)
_FuncPtr_update_image = CFUNCTYPE(None, sg_image, POINTER(sg_image_data), c_void_p)
_FuncPtr_append_buffer = CFUNCTYPE(None, sg_buffer, POINTER(sg_range), c_int, c_void_p)
_FuncPtr_begin_pass = CFUNCTYPE(None, POINTER(sg_pass), c_void_p)
_FuncPtr_apply_viewport = CFUNCTYPE(None, c_int, c_int, c_int, c_int, c_bool, c_void_p)
_FuncPtr_apply_scissor_rect = CFUNCTYPE(None, c_int, c_int, c_int, c_int, c_bool, c_void_p)
_FuncPtr_apply_pipeline = CFUNCTYPE(None, sg_pipeline, c_void_p)
_FuncPtr_apply_bindings = CFUNCTYPE(None, POINTER(sg_bindings), c_void_p)
_FuncPtr_apply_uniforms = CFUNCTYPE(None, c_int, POINTER(sg_range), c_void_p)
_FuncPtr_draw = CFUNCTYPE(None, c_int, c_int, c_int, c_void_p)
_FuncPtr_draw_ex = CFUNCTYPE(None, c_int, c_int, c_int, c_int, c_int, c_void_p)
_FuncPtr_dispatch = CFUNCTYPE(None, c_int, c_int, c_int, c_void_p)
_FuncPtr_end_pass = CFUNCTYPE(None, c_void_p)
_FuncPtr_commit = CFUNCTYPE(None, c_void_p)
_FuncPtr_alloc_buffer = CFUNCTYPE(None, sg_buffer, c_void_p)
_FuncPtr_alloc_image = CFUNCTYPE(None, sg_image, c_void_p)
_FuncPtr_alloc_sampler = CFUNCTYPE(None, sg_sampler, c_void_p)
_FuncPtr_alloc_shader = CFUNCTYPE(None, sg_shader, c_void_p)
_FuncPtr_alloc_pipeline = CFUNCTYPE(None, sg_pipeline, c_void_p)
_FuncPtr_alloc_view = CFUNCTYPE(None, sg_view, c_void_p)
_FuncPtr_dealloc_buffer = CFUNCTYPE(None, sg_buffer, c_void_p)
_FuncPtr_dealloc_image = CFUNCTYPE(None, sg_image, c_void_p)
_FuncPtr_dealloc_sampler = CFUNCTYPE(None, sg_sampler, c_void_p)
_FuncPtr_dealloc_shader = CFUNCTYPE(None, sg_shader, c_void_p)
_FuncPtr_dealloc_pipeline = CFUNCTYPE(None, sg_pipeline, c_void_p)
_FuncPtr_dealloc_view = CFUNCTYPE(None, sg_view, c_void_p)
_FuncPtr_init_buffer = CFUNCTYPE(None, sg_buffer, POINTER(sg_buffer_desc), c_void_p)
_FuncPtr_init_image = CFUNCTYPE(None, sg_image, POINTER(sg_image_desc), c_void_p)
_FuncPtr_init_sampler = CFUNCTYPE(None, sg_sampler, POINTER(sg_sampler_desc), c_void_p)
_FuncPtr_init_shader = CFUNCTYPE(None, sg_shader, POINTER(sg_shader_desc), c_void_p)
_FuncPtr_init_pipeline = CFUNCTYPE(None, sg_pipeline, POINTER(sg_pipeline_desc), c_void_p)
_FuncPtr_init_view = CFUNCTYPE(None, sg_view, POINTER(sg_view_desc), c_void_p)
_FuncPtr_uninit_buffer = CFUNCTYPE(None, sg_buffer, c_void_p)
_FuncPtr_uninit_image = CFUNCTYPE(None, sg_image, c_void_p)
_FuncPtr_uninit_sampler = CFUNCTYPE(None, sg_sampler, c_void_p)
_FuncPtr_uninit_shader = CFUNCTYPE(None, sg_shader, c_void_p)
_FuncPtr_uninit_pipeline = CFUNCTYPE(None, sg_pipeline, c_void_p)
_FuncPtr_uninit_view = CFUNCTYPE(None, sg_view, c_void_p)
_FuncPtr_fail_buffer = CFUNCTYPE(None, sg_buffer, c_void_p)
_FuncPtr_fail_image = CFUNCTYPE(None, sg_image, c_void_p)
_FuncPtr_fail_sampler = CFUNCTYPE(None, sg_sampler, c_void_p)
_FuncPtr_fail_shader = CFUNCTYPE(None, sg_shader, c_void_p)
_FuncPtr_fail_pipeline = CFUNCTYPE(None, sg_pipeline, c_void_p)
_FuncPtr_fail_view = CFUNCTYPE(None, sg_view, c_void_p)
_FuncPtr_push_debug_group = CFUNCTYPE(None, c_char_p, c_void_p)
_FuncPtr_pop_debug_group = CFUNCTYPE(None, c_void_p)
_FuncPtr_func = CFUNCTYPE(None, c_char_p, c_uint32, c_uint32, c_char_p, c_uint32, c_char_p, c_void_p)
_FuncPtr_alloc_fn = CFUNCTYPE(c_void_p, c_size_t, c_void_p)
_FuncPtr_free_fn = CFUNCTYPE(None, c_void_p, c_void_p)
_FuncPtr_init_cb = CFUNCTYPE(None)
_FuncPtr_frame_cb = CFUNCTYPE(None)
_FuncPtr_cleanup_cb = CFUNCTYPE(None)
_FuncPtr_event_cb = CFUNCTYPE(None, POINTER(sapp_event))
_FuncPtr_init_userdata_cb = CFUNCTYPE(None, c_void_p)
_FuncPtr_frame_userdata_cb = CFUNCTYPE(None, c_void_p)
_FuncPtr_cleanup_userdata_cb = CFUNCTYPE(None, c_void_p)
_FuncPtr_event_userdata_cb = CFUNCTYPE(None, POINTER(sapp_event), c_void_p)
_FuncPtr_callback = CFUNCTYPE(None, POINTER(sapp_html5_fetch_response))
GETDPIFORWINDOW_T = CFUNCTYPE(c_int, c_int)
SETPROCESSDPIAWARE_T = CFUNCTYPE(c_int)
SETPROCESSDPIAWARENESSCONTEXT_T = CFUNCTYPE(c_bool, POINTER(DPI_AWARENESS_CONTEXT_T__))
SETPROCESSDPIAWARENESS_T = CFUNCTYPE(c_int, c_int)
GETDPIFORMONITOR_T = CFUNCTYPE(c_int, c_int, c_int, c_void_p, c_void_p)

# =============================================================================
# Structures
# =============================================================================

# sg_buffer
sg_buffer._fields_ = [
    ("id", c_uint32),
]

# sg_image
sg_image._fields_ = [
    ("id", c_uint32),
]

# sg_sampler
sg_sampler._fields_ = [
    ("id", c_uint32),
]

# sg_shader
sg_shader._fields_ = [
    ("id", c_uint32),
]

# sg_pipeline
sg_pipeline._fields_ = [
    ("id", c_uint32),
]

# sg_view
sg_view._fields_ = [
    ("id", c_uint32),
]

# sg_range
sg_range._fields_ = [
    ("ptr", c_void_p),
    ("size", c_size_t),
]

# sg_color
sg_color._fields_ = [
    ("r", c_float),
    ("g", c_float),
    ("b", c_float),
    ("a", c_float),
]

# sg_pixelformat_info
sg_pixelformat_info._fields_ = [
    ("sample", c_bool),
    ("filter", c_bool),
    ("render", c_bool),
    ("blend", c_bool),
    ("msaa", c_bool),
    ("depth", c_bool),
    ("compressed", c_bool),
    ("read", c_bool),
    ("write", c_bool),
    ("bytes_per_pixel", c_int),
]

# sg_features
sg_features._fields_ = [
    ("origin_top_left", c_bool),
    ("image_clamp_to_border", c_bool),
    ("mrt_independent_blend_state", c_bool),
    ("mrt_independent_write_mask", c_bool),
    ("compute", c_bool),
    ("msaa_texture_bindings", c_bool),
    ("separate_buffer_types", c_bool),
    ("draw_base_vertex", c_bool),
    ("draw_base_instance", c_bool),
    ("dual_source_blending", c_bool),
    ("gl_texture_views", c_bool),
]

# sg_limits
sg_limits._fields_ = [
    ("max_image_size_2d", c_int),
    ("max_image_size_cube", c_int),
    ("max_image_size_3d", c_int),
    ("max_image_size_array", c_int),
    ("max_image_array_layers", c_int),
    ("max_vertex_attrs", c_int),
    ("max_color_attachments", c_int),
    ("max_texture_bindings_per_stage", c_int),
    ("max_storage_buffer_bindings_per_stage", c_int),
    ("max_storage_image_bindings_per_stage", c_int),
    ("gl_max_vertex_uniform_components", c_int),
    ("gl_max_combined_texture_image_units", c_int),
    ("d3d11_max_unordered_access_views", c_int),
    ("vk_min_uniform_buffer_offset_alignment", c_int),
]

# sg_color_attachment_action
sg_color_attachment_action._fields_ = [
    ("load_action", c_int),
    ("store_action", c_int),
    ("clear_value", sg_color),
]

# sg_depth_attachment_action
sg_depth_attachment_action._fields_ = [
    ("load_action", c_int),
    ("store_action", c_int),
    ("clear_value", c_float),
]

# sg_stencil_attachment_action
sg_stencil_attachment_action._fields_ = [
    ("load_action", c_int),
    ("store_action", c_int),
    ("clear_value", c_uint8),
]

# sg_pass_action
sg_pass_action._fields_ = [
    ("colors", sg_color_attachment_action * 8),
    ("depth", sg_depth_attachment_action),
    ("stencil", sg_stencil_attachment_action),
]

# sg_metal_swapchain
sg_metal_swapchain._fields_ = [
    ("current_drawable", c_void_p),
    ("depth_stencil_texture", c_void_p),
    ("msaa_color_texture", c_void_p),
]

# sg_d3d11_swapchain
sg_d3d11_swapchain._fields_ = [
    ("render_view", c_void_p),
    ("resolve_view", c_void_p),
    ("depth_stencil_view", c_void_p),
]

# sg_wgpu_swapchain
sg_wgpu_swapchain._fields_ = [
    ("render_view", c_void_p),
    ("resolve_view", c_void_p),
    ("depth_stencil_view", c_void_p),
]

# sg_vulkan_swapchain
sg_vulkan_swapchain._fields_ = [
    ("render_image", c_void_p),
    ("render_view", c_void_p),
    ("resolve_image", c_void_p),
    ("resolve_view", c_void_p),
    ("depth_stencil_image", c_void_p),
    ("depth_stencil_view", c_void_p),
    ("render_finished_semaphore", c_void_p),
    ("present_complete_semaphore", c_void_p),
]

# sg_gl_swapchain
sg_gl_swapchain._fields_ = [
    ("framebuffer", c_uint32),
]

# sg_swapchain
sg_swapchain._fields_ = [
    ("width", c_int),
    ("height", c_int),
    ("sample_count", c_int),
    ("color_format", c_int),
    ("depth_format", c_int),
    ("metal", sg_metal_swapchain),
    ("d3d11", sg_d3d11_swapchain),
    ("wgpu", sg_wgpu_swapchain),
    ("vulkan", sg_vulkan_swapchain),
    ("gl", sg_gl_swapchain),
]

# sg_attachments
sg_attachments._fields_ = [
    ("colors", sg_view * 8),
    ("resolves", sg_view * 8),
    ("depth_stencil", sg_view),
]

# sg_pass
sg_pass._fields_ = [
    ("_start_canary", c_uint32),
    ("compute", c_bool),
    ("action", sg_pass_action),
    ("attachments", sg_attachments),
    ("swapchain", sg_swapchain),
    ("label", c_char_p),
    ("_end_canary", c_uint32),
]

# sg_bindings
sg_bindings._fields_ = [
    ("_start_canary", c_uint32),
    ("vertex_buffers", sg_buffer * 8),
    ("vertex_buffer_offsets", c_int * 8),
    ("index_buffer", sg_buffer),
    ("index_buffer_offset", c_int),
    ("views", sg_view * 32),
    ("samplers", sg_sampler * 12),
    ("_end_canary", c_uint32),
]

# sg_buffer_usage
sg_buffer_usage._fields_ = [
    ("vertex_buffer", c_bool),
    ("index_buffer", c_bool),
    ("storage_buffer", c_bool),
    ("immutable", c_bool),
    ("dynamic_update", c_bool),
    ("stream_update", c_bool),
]

# sg_buffer_desc
sg_buffer_desc._fields_ = [
    ("_start_canary", c_uint32),
    ("size", c_size_t),
    ("usage", sg_buffer_usage),
    ("data", sg_range),
    ("label", c_char_p),
    ("gl_buffers", c_uint32 * 2),
    ("mtl_buffers", c_void_p * 2),
    ("d3d11_buffer", c_void_p),
    ("wgpu_buffer", c_void_p),
    ("_end_canary", c_uint32),
]

# sg_image_usage
sg_image_usage._fields_ = [
    ("storage_image", c_bool),
    ("color_attachment", c_bool),
    ("resolve_attachment", c_bool),
    ("depth_stencil_attachment", c_bool),
    ("immutable", c_bool),
    ("dynamic_update", c_bool),
    ("stream_update", c_bool),
]

# sg_image_data
sg_image_data._fields_ = [
    ("mip_levels", sg_range * 16),
]

# sg_image_desc
sg_image_desc._fields_ = [
    ("_start_canary", c_uint32),
    ("type", c_int),
    ("usage", sg_image_usage),
    ("width", c_int),
    ("height", c_int),
    ("num_slices", c_int),
    ("num_mipmaps", c_int),
    ("pixel_format", c_int),
    ("sample_count", c_int),
    ("data", sg_image_data),
    ("label", c_char_p),
    ("gl_textures", c_uint32 * 2),
    ("gl_texture_target", c_uint32),
    ("mtl_textures", c_void_p * 2),
    ("d3d11_texture", c_void_p),
    ("wgpu_texture", c_void_p),
    ("_end_canary", c_uint32),
]

# sg_sampler_desc
sg_sampler_desc._fields_ = [
    ("_start_canary", c_uint32),
    ("min_filter", c_int),
    ("mag_filter", c_int),
    ("mipmap_filter", c_int),
    ("wrap_u", c_int),
    ("wrap_v", c_int),
    ("wrap_w", c_int),
    ("min_lod", c_float),
    ("max_lod", c_float),
    ("border_color", c_int),
    ("compare", c_int),
    ("max_anisotropy", c_uint32),
    ("label", c_char_p),
    ("gl_sampler", c_uint32),
    ("mtl_sampler", c_void_p),
    ("d3d11_sampler", c_void_p),
    ("wgpu_sampler", c_void_p),
    ("_end_canary", c_uint32),
]

# sg_shader_function
sg_shader_function._fields_ = [
    ("source", c_char_p),
    ("bytecode", sg_range),
    ("entry", c_char_p),
    ("d3d11_target", c_char_p),
    ("d3d11_filepath", c_char_p),
]

# sg_shader_vertex_attr
sg_shader_vertex_attr._fields_ = [
    ("base_type", c_int),
    ("glsl_name", c_char_p),
    ("hlsl_sem_name", c_char_p),
    ("hlsl_sem_index", c_uint8),
]

# sg_glsl_shader_uniform
sg_glsl_shader_uniform._fields_ = [
    ("type", c_int),
    ("array_count", c_uint16),
    ("glsl_name", c_char_p),
]

# sg_shader_uniform_block
sg_shader_uniform_block._fields_ = [
    ("stage", c_int),
    ("size", c_uint32),
    ("hlsl_register_b_n", c_uint8),
    ("msl_buffer_n", c_uint8),
    ("wgsl_group0_binding_n", c_uint8),
    ("spirv_set0_binding_n", c_uint8),
    ("layout", c_int),
    ("glsl_uniforms", sg_glsl_shader_uniform * 16),
]

# sg_shader_texture_view
sg_shader_texture_view._fields_ = [
    ("stage", c_int),
    ("image_type", c_int),
    ("sample_type", c_int),
    ("multisampled", c_bool),
    ("hlsl_register_t_n", c_uint8),
    ("msl_texture_n", c_uint8),
    ("wgsl_group1_binding_n", c_uint8),
    ("spirv_set1_binding_n", c_uint8),
]

# sg_shader_storage_buffer_view
sg_shader_storage_buffer_view._fields_ = [
    ("stage", c_int),
    ("readonly", c_bool),
    ("hlsl_register_t_n", c_uint8),
    ("hlsl_register_u_n", c_uint8),
    ("msl_buffer_n", c_uint8),
    ("wgsl_group1_binding_n", c_uint8),
    ("spirv_set1_binding_n", c_uint8),
    ("glsl_binding_n", c_uint8),
]

# sg_shader_storage_image_view
sg_shader_storage_image_view._fields_ = [
    ("stage", c_int),
    ("image_type", c_int),
    ("access_format", c_int),
    ("writeonly", c_bool),
    ("hlsl_register_u_n", c_uint8),
    ("msl_texture_n", c_uint8),
    ("wgsl_group1_binding_n", c_uint8),
    ("spirv_set1_binding_n", c_uint8),
    ("glsl_binding_n", c_uint8),
]

# sg_shader_view
sg_shader_view._fields_ = [
    ("texture", sg_shader_texture_view),
    ("storage_buffer", sg_shader_storage_buffer_view),
    ("storage_image", sg_shader_storage_image_view),
]

# sg_shader_sampler
sg_shader_sampler._fields_ = [
    ("stage", c_int),
    ("sampler_type", c_int),
    ("hlsl_register_s_n", c_uint8),
    ("msl_sampler_n", c_uint8),
    ("wgsl_group1_binding_n", c_uint8),
    ("spirv_set1_binding_n", c_uint8),
]

# sg_shader_texture_sampler_pair
sg_shader_texture_sampler_pair._fields_ = [
    ("stage", c_int),
    ("view_slot", c_uint8),
    ("sampler_slot", c_uint8),
    ("glsl_name", c_char_p),
]

# sg_mtl_shader_threads_per_threadgroup
sg_mtl_shader_threads_per_threadgroup._fields_ = [
    ("x", c_int),
    ("y", c_int),
    ("z", c_int),
]

# sg_shader_desc
sg_shader_desc._fields_ = [
    ("_start_canary", c_uint32),
    ("vertex_func", sg_shader_function),
    ("fragment_func", sg_shader_function),
    ("compute_func", sg_shader_function),
    ("attrs", sg_shader_vertex_attr * 16),
    ("uniform_blocks", sg_shader_uniform_block * 8),
    ("views", sg_shader_view * 32),
    ("samplers", sg_shader_sampler * 12),
    ("texture_sampler_pairs", sg_shader_texture_sampler_pair * 32),
    ("mtl_threads_per_threadgroup", sg_mtl_shader_threads_per_threadgroup),
    ("label", c_char_p),
    ("_end_canary", c_uint32),
]

# sg_vertex_buffer_layout_state
sg_vertex_buffer_layout_state._fields_ = [
    ("stride", c_int),
    ("step_func", c_int),
    ("step_rate", c_int),
]

# sg_vertex_attr_state
sg_vertex_attr_state._fields_ = [
    ("buffer_index", c_int),
    ("offset", c_int),
    ("format", c_int),
]

# sg_vertex_layout_state
sg_vertex_layout_state._fields_ = [
    ("buffers", sg_vertex_buffer_layout_state * 8),
    ("attrs", sg_vertex_attr_state * 16),
]

# sg_stencil_face_state
sg_stencil_face_state._fields_ = [
    ("compare", c_int),
    ("fail_op", c_int),
    ("depth_fail_op", c_int),
    ("pass_op", c_int),
]

# sg_stencil_state
sg_stencil_state._fields_ = [
    ("enabled", c_bool),
    ("front", sg_stencil_face_state),
    ("back", sg_stencil_face_state),
    ("read_mask", c_uint8),
    ("write_mask", c_uint8),
    ("ref", c_uint8),
]

# sg_depth_state
sg_depth_state._fields_ = [
    ("pixel_format", c_int),
    ("compare", c_int),
    ("write_enabled", c_bool),
    ("bias", c_float),
    ("bias_slope_scale", c_float),
    ("bias_clamp", c_float),
]

# sg_blend_state
sg_blend_state._fields_ = [
    ("enabled", c_bool),
    ("src_factor_rgb", c_int),
    ("dst_factor_rgb", c_int),
    ("op_rgb", c_int),
    ("src_factor_alpha", c_int),
    ("dst_factor_alpha", c_int),
    ("op_alpha", c_int),
]

# sg_color_target_state
sg_color_target_state._fields_ = [
    ("pixel_format", c_int),
    ("write_mask", c_int),
    ("blend", sg_blend_state),
]

# sg_pipeline_desc
sg_pipeline_desc._fields_ = [
    ("_start_canary", c_uint32),
    ("compute", c_bool),
    ("shader", sg_shader),
    ("layout", sg_vertex_layout_state),
    ("depth", sg_depth_state),
    ("stencil", sg_stencil_state),
    ("color_count", c_int),
    ("colors", sg_color_target_state * 8),
    ("primitive_type", c_int),
    ("index_type", c_int),
    ("cull_mode", c_int),
    ("face_winding", c_int),
    ("sample_count", c_int),
    ("blend_color", sg_color),
    ("alpha_to_coverage_enabled", c_bool),
    ("label", c_char_p),
    ("_end_canary", c_uint32),
]

# sg_buffer_view_desc
sg_buffer_view_desc._fields_ = [
    ("buffer", sg_buffer),
    ("offset", c_int),
]

# sg_image_view_desc
sg_image_view_desc._fields_ = [
    ("image", sg_image),
    ("mip_level", c_int),
    ("slice", c_int),
]

# sg_texture_view_range
sg_texture_view_range._fields_ = [
    ("base", c_int),
    ("count", c_int),
]

# sg_texture_view_desc
sg_texture_view_desc._fields_ = [
    ("image", sg_image),
    ("mip_levels", sg_texture_view_range),
    ("slices", sg_texture_view_range),
]

# sg_view_desc
sg_view_desc._fields_ = [
    ("_start_canary", c_uint32),
    ("texture", sg_texture_view_desc),
    ("storage_buffer", sg_buffer_view_desc),
    ("storage_image", sg_image_view_desc),
    ("color_attachment", sg_image_view_desc),
    ("resolve_attachment", sg_image_view_desc),
    ("depth_stencil_attachment", sg_image_view_desc),
    ("label", c_char_p),
    ("_end_canary", c_uint32),
]

# sg_trace_hooks
sg_trace_hooks._fields_ = [
    ("user_data", c_void_p),
    ("reset_state_cache", _FuncPtr_reset_state_cache),
    ("make_buffer", _FuncPtr_make_buffer),
    ("make_image", _FuncPtr_make_image),
    ("make_sampler", _FuncPtr_make_sampler),
    ("make_shader", _FuncPtr_make_shader),
    ("make_pipeline", _FuncPtr_make_pipeline),
    ("make_view", _FuncPtr_make_view),
    ("destroy_buffer", _FuncPtr_destroy_buffer),
    ("destroy_image", _FuncPtr_destroy_image),
    ("destroy_sampler", _FuncPtr_destroy_sampler),
    ("destroy_shader", _FuncPtr_destroy_shader),
    ("destroy_pipeline", _FuncPtr_destroy_pipeline),
    ("destroy_view", _FuncPtr_destroy_view),
    ("update_buffer", _FuncPtr_update_buffer),
    ("update_image", _FuncPtr_update_image),
    ("append_buffer", _FuncPtr_append_buffer),
    ("begin_pass", _FuncPtr_begin_pass),
    ("apply_viewport", _FuncPtr_apply_viewport),
    ("apply_scissor_rect", _FuncPtr_apply_scissor_rect),
    ("apply_pipeline", _FuncPtr_apply_pipeline),
    ("apply_bindings", _FuncPtr_apply_bindings),
    ("apply_uniforms", _FuncPtr_apply_uniforms),
    ("draw", _FuncPtr_draw),
    ("draw_ex", _FuncPtr_draw_ex),
    ("dispatch", _FuncPtr_dispatch),
    ("end_pass", _FuncPtr_end_pass),
    ("commit", _FuncPtr_commit),
    ("alloc_buffer", _FuncPtr_alloc_buffer),
    ("alloc_image", _FuncPtr_alloc_image),
    ("alloc_sampler", _FuncPtr_alloc_sampler),
    ("alloc_shader", _FuncPtr_alloc_shader),
    ("alloc_pipeline", _FuncPtr_alloc_pipeline),
    ("alloc_view", _FuncPtr_alloc_view),
    ("dealloc_buffer", _FuncPtr_dealloc_buffer),
    ("dealloc_image", _FuncPtr_dealloc_image),
    ("dealloc_sampler", _FuncPtr_dealloc_sampler),
    ("dealloc_shader", _FuncPtr_dealloc_shader),
    ("dealloc_pipeline", _FuncPtr_dealloc_pipeline),
    ("dealloc_view", _FuncPtr_dealloc_view),
    ("init_buffer", _FuncPtr_init_buffer),
    ("init_image", _FuncPtr_init_image),
    ("init_sampler", _FuncPtr_init_sampler),
    ("init_shader", _FuncPtr_init_shader),
    ("init_pipeline", _FuncPtr_init_pipeline),
    ("init_view", _FuncPtr_init_view),
    ("uninit_buffer", _FuncPtr_uninit_buffer),
    ("uninit_image", _FuncPtr_uninit_image),
    ("uninit_sampler", _FuncPtr_uninit_sampler),
    ("uninit_shader", _FuncPtr_uninit_shader),
    ("uninit_pipeline", _FuncPtr_uninit_pipeline),
    ("uninit_view", _FuncPtr_uninit_view),
    ("fail_buffer", _FuncPtr_fail_buffer),
    ("fail_image", _FuncPtr_fail_image),
    ("fail_sampler", _FuncPtr_fail_sampler),
    ("fail_shader", _FuncPtr_fail_shader),
    ("fail_pipeline", _FuncPtr_fail_pipeline),
    ("fail_view", _FuncPtr_fail_view),
    ("push_debug_group", _FuncPtr_push_debug_group),
    ("pop_debug_group", _FuncPtr_pop_debug_group),
]

# sg_slot_info
sg_slot_info._fields_ = [
    ("state", c_int),
    ("res_id", c_uint32),
    ("uninit_count", c_uint32),
]

# sg_buffer_info
sg_buffer_info._fields_ = [
    ("slot", sg_slot_info),
    ("update_frame_index", c_uint32),
    ("append_frame_index", c_uint32),
    ("append_pos", c_int),
    ("append_overflow", c_bool),
    ("num_slots", c_int),
    ("active_slot", c_int),
]

# sg_image_info
sg_image_info._fields_ = [
    ("slot", sg_slot_info),
    ("upd_frame_index", c_uint32),
    ("num_slots", c_int),
    ("active_slot", c_int),
]

# sg_sampler_info
sg_sampler_info._fields_ = [
    ("slot", sg_slot_info),
]

# sg_shader_info
sg_shader_info._fields_ = [
    ("slot", sg_slot_info),
]

# sg_pipeline_info
sg_pipeline_info._fields_ = [
    ("slot", sg_slot_info),
]

# sg_view_info
sg_view_info._fields_ = [
    ("slot", sg_slot_info),
]

# sg_frame_stats_gl
sg_frame_stats_gl._fields_ = [
    ("num_bind_buffer", c_uint32),
    ("num_active_texture", c_uint32),
    ("num_bind_texture", c_uint32),
    ("num_bind_sampler", c_uint32),
    ("num_bind_image_texture", c_uint32),
    ("num_use_program", c_uint32),
    ("num_render_state", c_uint32),
    ("num_vertex_attrib_pointer", c_uint32),
    ("num_vertex_attrib_divisor", c_uint32),
    ("num_enable_vertex_attrib_array", c_uint32),
    ("num_disable_vertex_attrib_array", c_uint32),
    ("num_uniform", c_uint32),
    ("num_memory_barriers", c_uint32),
]

# sg_frame_stats_d3d11_pass
sg_frame_stats_d3d11_pass._fields_ = [
    ("num_om_set_render_targets", c_uint32),
    ("num_clear_render_target_view", c_uint32),
    ("num_clear_depth_stencil_view", c_uint32),
    ("num_resolve_subresource", c_uint32),
]

# sg_frame_stats_d3d11_pipeline
sg_frame_stats_d3d11_pipeline._fields_ = [
    ("num_rs_set_state", c_uint32),
    ("num_om_set_depth_stencil_state", c_uint32),
    ("num_om_set_blend_state", c_uint32),
    ("num_ia_set_primitive_topology", c_uint32),
    ("num_ia_set_input_layout", c_uint32),
    ("num_vs_set_shader", c_uint32),
    ("num_vs_set_constant_buffers", c_uint32),
    ("num_ps_set_shader", c_uint32),
    ("num_ps_set_constant_buffers", c_uint32),
    ("num_cs_set_shader", c_uint32),
    ("num_cs_set_constant_buffers", c_uint32),
]

# sg_frame_stats_d3d11_bindings
sg_frame_stats_d3d11_bindings._fields_ = [
    ("num_ia_set_vertex_buffers", c_uint32),
    ("num_ia_set_index_buffer", c_uint32),
    ("num_vs_set_shader_resources", c_uint32),
    ("num_vs_set_samplers", c_uint32),
    ("num_ps_set_shader_resources", c_uint32),
    ("num_ps_set_samplers", c_uint32),
    ("num_cs_set_shader_resources", c_uint32),
    ("num_cs_set_samplers", c_uint32),
    ("num_cs_set_unordered_access_views", c_uint32),
]

# sg_frame_stats_d3d11_uniforms
sg_frame_stats_d3d11_uniforms._fields_ = [
    ("num_update_subresource", c_uint32),
]

# sg_frame_stats_d3d11_draw
sg_frame_stats_d3d11_draw._fields_ = [
    ("num_draw_indexed_instanced", c_uint32),
    ("num_draw_indexed", c_uint32),
    ("num_draw_instanced", c_uint32),
    ("num_draw", c_uint32),
]

# sg_frame_stats_d3d11
sg_frame_stats_d3d11._fields_ = [
    ("pass", sg_frame_stats_d3d11_pass),
    ("pipeline", sg_frame_stats_d3d11_pipeline),
    ("bindings", sg_frame_stats_d3d11_bindings),
    ("uniforms", sg_frame_stats_d3d11_uniforms),
    ("draw", sg_frame_stats_d3d11_draw),
    ("num_map", c_uint32),
    ("num_unmap", c_uint32),
]

# sg_frame_stats_metal_idpool
sg_frame_stats_metal_idpool._fields_ = [
    ("num_added", c_uint32),
    ("num_released", c_uint32),
    ("num_garbage_collected", c_uint32),
]

# sg_frame_stats_metal_pipeline
sg_frame_stats_metal_pipeline._fields_ = [
    ("num_set_blend_color", c_uint32),
    ("num_set_cull_mode", c_uint32),
    ("num_set_front_facing_winding", c_uint32),
    ("num_set_stencil_reference_value", c_uint32),
    ("num_set_depth_bias", c_uint32),
    ("num_set_render_pipeline_state", c_uint32),
    ("num_set_depth_stencil_state", c_uint32),
]

# sg_frame_stats_metal_bindings
sg_frame_stats_metal_bindings._fields_ = [
    ("num_set_vertex_buffer", c_uint32),
    ("num_set_vertex_buffer_offset", c_uint32),
    ("num_skip_redundant_vertex_buffer", c_uint32),
    ("num_set_vertex_texture", c_uint32),
    ("num_skip_redundant_vertex_texture", c_uint32),
    ("num_set_vertex_sampler_state", c_uint32),
    ("num_skip_redundant_vertex_sampler_state", c_uint32),
    ("num_set_fragment_buffer", c_uint32),
    ("num_set_fragment_buffer_offset", c_uint32),
    ("num_skip_redundant_fragment_buffer", c_uint32),
    ("num_set_fragment_texture", c_uint32),
    ("num_skip_redundant_fragment_texture", c_uint32),
    ("num_set_fragment_sampler_state", c_uint32),
    ("num_skip_redundant_fragment_sampler_state", c_uint32),
    ("num_set_compute_buffer", c_uint32),
    ("num_set_compute_buffer_offset", c_uint32),
    ("num_skip_redundant_compute_buffer", c_uint32),
    ("num_set_compute_texture", c_uint32),
    ("num_skip_redundant_compute_texture", c_uint32),
    ("num_set_compute_sampler_state", c_uint32),
    ("num_skip_redundant_compute_sampler_state", c_uint32),
]

# sg_frame_stats_metal_uniforms
sg_frame_stats_metal_uniforms._fields_ = [
    ("num_set_vertex_buffer_offset", c_uint32),
    ("num_set_fragment_buffer_offset", c_uint32),
    ("num_set_compute_buffer_offset", c_uint32),
]

# sg_frame_stats_metal
sg_frame_stats_metal._fields_ = [
    ("idpool", sg_frame_stats_metal_idpool),
    ("pipeline", sg_frame_stats_metal_pipeline),
    ("bindings", sg_frame_stats_metal_bindings),
    ("uniforms", sg_frame_stats_metal_uniforms),
]

# sg_frame_stats_wgpu_uniforms
sg_frame_stats_wgpu_uniforms._fields_ = [
    ("num_set_bindgroup", c_uint32),
    ("size_write_buffer", c_uint32),
]

# sg_frame_stats_wgpu_bindings
sg_frame_stats_wgpu_bindings._fields_ = [
    ("num_set_vertex_buffer", c_uint32),
    ("num_skip_redundant_vertex_buffer", c_uint32),
    ("num_set_index_buffer", c_uint32),
    ("num_skip_redundant_index_buffer", c_uint32),
    ("num_create_bindgroup", c_uint32),
    ("num_discard_bindgroup", c_uint32),
    ("num_set_bindgroup", c_uint32),
    ("num_skip_redundant_bindgroup", c_uint32),
    ("num_bindgroup_cache_hits", c_uint32),
    ("num_bindgroup_cache_misses", c_uint32),
    ("num_bindgroup_cache_collisions", c_uint32),
    ("num_bindgroup_cache_invalidates", c_uint32),
    ("num_bindgroup_cache_hash_vs_key_mismatch", c_uint32),
]

# sg_frame_stats_wgpu
sg_frame_stats_wgpu._fields_ = [
    ("uniforms", sg_frame_stats_wgpu_uniforms),
    ("bindings", sg_frame_stats_wgpu_bindings),
]

# sg_frame_stats_vk
sg_frame_stats_vk._fields_ = [
    ("num_cmd_pipeline_barrier", c_uint32),
    ("num_allocate_memory", c_uint32),
    ("num_free_memory", c_uint32),
    ("size_allocate_memory", c_uint32),
    ("num_delete_queue_added", c_uint32),
    ("num_delete_queue_collected", c_uint32),
    ("num_cmd_copy_buffer", c_uint32),
    ("num_cmd_copy_buffer_to_image", c_uint32),
    ("num_cmd_set_descriptor_buffer_offsets", c_uint32),
    ("size_descriptor_buffer_writes", c_uint32),
]

# sg_frame_resource_stats
sg_frame_resource_stats._fields_ = [
    ("allocated", c_uint32),
    ("deallocated", c_uint32),
    ("inited", c_uint32),
    ("uninited", c_uint32),
]

# sg_total_resource_stats
sg_total_resource_stats._fields_ = [
    ("alive", c_uint32),
    ("free", c_uint32),
    ("allocated", c_uint32),
    ("deallocated", c_uint32),
    ("inited", c_uint32),
    ("uninited", c_uint32),
]

# sg_total_stats
sg_total_stats._fields_ = [
    ("buffers", sg_total_resource_stats),
    ("images", sg_total_resource_stats),
    ("samplers", sg_total_resource_stats),
    ("views", sg_total_resource_stats),
    ("shaders", sg_total_resource_stats),
    ("pipelines", sg_total_resource_stats),
]

# sg_frame_stats
sg_frame_stats._fields_ = [
    ("frame_index", c_uint32),
    ("num_passes", c_uint32),
    ("num_apply_viewport", c_uint32),
    ("num_apply_scissor_rect", c_uint32),
    ("num_apply_pipeline", c_uint32),
    ("num_apply_bindings", c_uint32),
    ("num_apply_uniforms", c_uint32),
    ("num_draw", c_uint32),
    ("num_draw_ex", c_uint32),
    ("num_dispatch", c_uint32),
    ("num_update_buffer", c_uint32),
    ("num_append_buffer", c_uint32),
    ("num_update_image", c_uint32),
    ("size_apply_uniforms", c_uint32),
    ("size_update_buffer", c_uint32),
    ("size_append_buffer", c_uint32),
    ("size_update_image", c_uint32),
    ("buffers", sg_frame_resource_stats),
    ("images", sg_frame_resource_stats),
    ("samplers", sg_frame_resource_stats),
    ("views", sg_frame_resource_stats),
    ("shaders", sg_frame_resource_stats),
    ("pipelines", sg_frame_resource_stats),
    ("gl", sg_frame_stats_gl),
    ("d3d11", sg_frame_stats_d3d11),
    ("metal", sg_frame_stats_metal),
    ("wgpu", sg_frame_stats_wgpu),
    ("vk", sg_frame_stats_vk),
]

# sg_stats
sg_stats._fields_ = [
    ("prev_frame", sg_frame_stats),
    ("cur_frame", sg_frame_stats),
    ("total", sg_total_stats),
]

# sg_environment_defaults
sg_environment_defaults._fields_ = [
    ("color_format", c_int),
    ("depth_format", c_int),
    ("sample_count", c_int),
]

# sg_metal_environment
sg_metal_environment._fields_ = [
    ("device", c_void_p),
]

# sg_d3d11_environment
sg_d3d11_environment._fields_ = [
    ("device", c_void_p),
    ("device_context", c_void_p),
]

# sg_wgpu_environment
sg_wgpu_environment._fields_ = [
    ("device", c_void_p),
]

# sg_vulkan_environment
sg_vulkan_environment._fields_ = [
    ("instance", c_void_p),
    ("physical_device", c_void_p),
    ("device", c_void_p),
    ("queue", c_void_p),
    ("queue_family_index", c_uint32),
]

# sg_environment
sg_environment._fields_ = [
    ("defaults", sg_environment_defaults),
    ("metal", sg_metal_environment),
    ("d3d11", sg_d3d11_environment),
    ("wgpu", sg_wgpu_environment),
    ("vulkan", sg_vulkan_environment),
]

# sg_commit_listener
sg_commit_listener._fields_ = [
    ("func", _FuncPtr_func),
    ("user_data", c_void_p),
]

# sg_allocator
sg_allocator._fields_ = [
    ("alloc_fn", _FuncPtr_alloc_fn),
    ("free_fn", _FuncPtr_free_fn),
    ("user_data", c_void_p),
]

# sg_logger
sg_logger._fields_ = [
    ("func", _FuncPtr_func),
    ("user_data", c_void_p),
]

# sg_d3d11_desc
sg_d3d11_desc._fields_ = [
    ("shader_debugging", c_bool),
]

# sg_metal_desc
sg_metal_desc._fields_ = [
    ("force_managed_storage_mode", c_bool),
    ("use_command_buffer_with_retained_references", c_bool),
]

# sg_wgpu_desc
sg_wgpu_desc._fields_ = [
    ("disable_bindgroups_cache", c_bool),
    ("bindgroups_cache_size", c_int),
]

# sg_vulkan_desc
sg_vulkan_desc._fields_ = [
    ("copy_staging_buffer_size", c_int),
    ("stream_staging_buffer_size", c_int),
    ("descriptor_buffer_size", c_int),
]

# sg_desc
sg_desc._fields_ = [
    ("_start_canary", c_uint32),
    ("buffer_pool_size", c_int),
    ("image_pool_size", c_int),
    ("sampler_pool_size", c_int),
    ("shader_pool_size", c_int),
    ("pipeline_pool_size", c_int),
    ("view_pool_size", c_int),
    ("uniform_buffer_size", c_int),
    ("max_commit_listeners", c_int),
    ("disable_validation", c_bool),
    ("enforce_portable_limits", c_bool),
    ("d3d11", sg_d3d11_desc),
    ("metal", sg_metal_desc),
    ("wgpu", sg_wgpu_desc),
    ("vulkan", sg_vulkan_desc),
    ("allocator", sg_allocator),
    ("logger", sg_logger),
    ("environment", sg_environment),
    ("_end_canary", c_uint32),
]

# sg_d3d11_buffer_info
sg_d3d11_buffer_info._fields_ = [
    ("buf", c_void_p),
]

# sg_d3d11_image_info
sg_d3d11_image_info._fields_ = [
    ("tex2d", c_void_p),
    ("tex3d", c_void_p),
    ("res", c_void_p),
]

# sg_d3d11_sampler_info
sg_d3d11_sampler_info._fields_ = [
    ("smp", c_void_p),
]

# sg_d3d11_shader_info
sg_d3d11_shader_info._fields_ = [
    ("cbufs", c_void_p * 8),
    ("vs", c_void_p),
    ("fs", c_void_p),
]

# sg_d3d11_pipeline_info
sg_d3d11_pipeline_info._fields_ = [
    ("il", c_void_p),
    ("rs", c_void_p),
    ("dss", c_void_p),
    ("bs", c_void_p),
]

# sg_d3d11_view_info
sg_d3d11_view_info._fields_ = [
    ("srv", c_void_p),
    ("uav", c_void_p),
    ("rtv", c_void_p),
    ("dsv", c_void_p),
]

# sg_mtl_buffer_info
sg_mtl_buffer_info._fields_ = [
    ("buf", c_void_p * 2),
    ("active_slot", c_int),
]

# sg_mtl_image_info
sg_mtl_image_info._fields_ = [
    ("tex", c_void_p * 2),
    ("active_slot", c_int),
]

# sg_mtl_sampler_info
sg_mtl_sampler_info._fields_ = [
    ("smp", c_void_p),
]

# sg_mtl_shader_info
sg_mtl_shader_info._fields_ = [
    ("vertex_lib", c_void_p),
    ("fragment_lib", c_void_p),
    ("vertex_func", c_void_p),
    ("fragment_func", c_void_p),
]

# sg_mtl_pipeline_info
sg_mtl_pipeline_info._fields_ = [
    ("rps", c_void_p),
    ("dss", c_void_p),
]

# sg_wgpu_buffer_info
sg_wgpu_buffer_info._fields_ = [
    ("buf", c_void_p),
]

# sg_wgpu_image_info
sg_wgpu_image_info._fields_ = [
    ("tex", c_void_p),
]

# sg_wgpu_sampler_info
sg_wgpu_sampler_info._fields_ = [
    ("smp", c_void_p),
]

# sg_wgpu_shader_info
sg_wgpu_shader_info._fields_ = [
    ("vs_mod", c_void_p),
    ("fs_mod", c_void_p),
    ("bgl", c_void_p),
]

# sg_wgpu_pipeline_info
sg_wgpu_pipeline_info._fields_ = [
    ("render_pipeline", c_void_p),
    ("compute_pipeline", c_void_p),
]

# sg_wgpu_view_info
sg_wgpu_view_info._fields_ = [
    ("view", c_void_p),
]

# sg_gl_buffer_info
sg_gl_buffer_info._fields_ = [
    ("buf", c_uint32 * 2),
    ("active_slot", c_int),
]

# sg_gl_image_info
sg_gl_image_info._fields_ = [
    ("tex", c_uint32 * 2),
    ("tex_target", c_uint32),
    ("active_slot", c_int),
]

# sg_gl_sampler_info
sg_gl_sampler_info._fields_ = [
    ("smp", c_uint32),
]

# sg_gl_shader_info
sg_gl_shader_info._fields_ = [
    ("prog", c_uint32),
]

# sg_gl_view_info
sg_gl_view_info._fields_ = [
    ("tex_view", c_uint32 * 2),
    ("msaa_render_buffer", c_uint32),
    ("msaa_resolve_frame_buffer", c_uint32),
]

# _sg_recti_t
_sg_recti_t._fields_ = [
    ("x", c_int),
    ("y", c_int),
    ("w", c_int),
    ("h", c_int),
]

# _sg_dimi_t
_sg_dimi_t._fields_ = [
    ("width", c_int),
    ("height", c_int),
]

# _sg_slot_t
_sg_slot_t._fields_ = [
    ("id", c_uint32),
    ("uninit_count", c_uint32),
    ("state", c_int),
]

# _sg_pool_t
_sg_pool_t._fields_ = [
    ("size", c_int),
    ("queue_top", c_int),
    ("gen_ctrs", POINTER(c_uint32)),
    ("free_queue", POINTER(c_int)),
]

# _sg_track_t
_sg_track_t._fields_ = [
    ("num_slots", c_int),
    ("cur_slot", c_int),
    ("slots", POINTER(c_uint32)),
    ("occupy_num_bytes", c_uint32),
    ("occupy_bits", POINTER(c_uint8)),
]

# _sg_sref_s
_sg_sref_s._fields_ = [
    ("id", c_uint32),
    ("uninit_count", c_uint32),
]

# _sg_buffer_ref_s
_sg_buffer_ref_s._fields_ = [
    ("ptr", POINTER(_sg_buffer_s)),
    ("sref", c_int),
]

# _sg_image_ref_s
_sg_image_ref_s._fields_ = [
    ("ptr", POINTER(_sg_image_s)),
    ("sref", c_int),
]

# _sg_sampler_ref_t
_sg_sampler_ref_t._fields_ = [
    ("ptr", POINTER(_sg_sampler_s)),
    ("sref", c_int),
]

# _sg_shader_ref_s
_sg_shader_ref_s._fields_ = [
    ("ptr", POINTER(_sg_shader_s)),
    ("sref", c_int),
]

# _sg_pipeline_ref_s
_sg_pipeline_ref_s._fields_ = [
    ("ptr", POINTER(_sg_pipeline_s)),
    ("sref", c_int),
]

# _sg_view_ref_s
_sg_view_ref_s._fields_ = [
    ("ptr", POINTER(_sg_view_s)),
    ("sref", c_int),
]

# _sg_str_t
_sg_str_t._fields_ = [
    ("buf", c_char * 32),
]

# _sg_buffer_common_t
_sg_buffer_common_t._fields_ = [
    ("size", c_int),
    ("append_pos", c_int),
    ("append_overflow", c_bool),
    ("update_frame_index", c_uint32),
    ("append_frame_index", c_uint32),
    ("num_slots", c_int),
    ("active_slot", c_int),
    ("usage", sg_buffer_usage),
]

# _sg_image_common_t
_sg_image_common_t._fields_ = [
    ("upd_frame_index", c_uint32),
    ("num_slots", c_int),
    ("active_slot", c_int),
    ("type", c_int),
    ("width", c_int),
    ("height", c_int),
    ("num_slices", c_int),
    ("num_mipmaps", c_int),
    ("usage", sg_image_usage),
    ("pixel_format", c_int),
    ("sample_count", c_int),
]

# _sg_sampler_common_t
_sg_sampler_common_t._fields_ = [
    ("min_filter", c_int),
    ("mag_filter", c_int),
    ("mipmap_filter", c_int),
    ("wrap_u", c_int),
    ("wrap_v", c_int),
    ("wrap_w", c_int),
    ("min_lod", c_float),
    ("max_lod", c_float),
    ("border_color", c_int),
    ("compare", c_int),
    ("max_anisotropy", c_uint32),
]

# _sg_shader_attr_t
_sg_shader_attr_t._fields_ = [
    ("base_type", c_int),
]

# _sg_shader_uniform_block_t
_sg_shader_uniform_block_t._fields_ = [
    ("stage", c_int),
    ("size", c_uint32),
]

# _sg_shader_view_t
_sg_shader_view_t._fields_ = [
    ("stage", c_int),
    ("view_type", c_int),
    ("image_type", c_int),
    ("access_format", c_int),
    ("sample_type", c_int),
    ("sbuf_readonly", c_bool),
    ("simg_writeonly", c_bool),
    ("multisampled", c_bool),
]

# _sg_shader_sampler_t
_sg_shader_sampler_t._fields_ = [
    ("stage", c_int),
    ("sampler_type", c_int),
]

# _sg_shader_texture_sampler_t
_sg_shader_texture_sampler_t._fields_ = [
    ("stage", c_int),
    ("view_slot", c_uint8),
    ("sampler_slot", c_uint8),
]

# _sg_shader_common_t
_sg_shader_common_t._fields_ = [
    ("required_bindings_and_uniforms", c_uint32),
    ("is_compute", c_bool),
    ("attrs", _sg_shader_attr_t * 16),
    ("uniform_blocks", _sg_shader_uniform_block_t * 8),
    ("views", _sg_shader_view_t * 32),
    ("samplers", _sg_shader_sampler_t * 12),
    ("texture_samplers", _sg_shader_texture_sampler_t * 32),
]

# _sg_pipeline_common_t
_sg_pipeline_common_t._fields_ = [
    ("vertex_buffer_layout_active", c_bool * 8),
    ("use_instanced_draw", c_bool),
    ("is_compute", c_bool),
    ("required_bindings_and_uniforms", c_uint32),
    ("shader", c_int),
    ("layout", sg_vertex_layout_state),
    ("depth", sg_depth_state),
    ("stencil", sg_stencil_state),
    ("color_count", c_int),
    ("colors", sg_color_target_state * 8),
    ("primitive_type", c_int),
    ("index_type", c_int),
    ("cull_mode", c_int),
    ("face_winding", c_int),
    ("sample_count", c_int),
    ("blend_color", sg_color),
    ("alpha_to_coverage_enabled", c_bool),
]

# _sg_buffer_view_common_t
_sg_buffer_view_common_t._fields_ = [
    ("ref", c_int),
    ("offset", c_int),
]

# _sg_image_view_common_t
_sg_image_view_common_t._fields_ = [
    ("ref", c_int),
    ("mip_level", c_int),
    ("slice", c_int),
    ("mip_level_count", c_int),
    ("slice_count", c_int),
]

# _sg_view_common_t
_sg_view_common_t._fields_ = [
    ("type", c_int),
    ("buf", _sg_buffer_view_common_t),
    ("img", _sg_image_view_common_t),
]

# _sg_buffer_s
_sg_buffer_s._fields_ = [
    ("slot", _sg_slot_t),
    ("cmn", _sg_buffer_common_t),
    ("d3d11", c_int),
]

# _sg_image_s
_sg_image_s._fields_ = [
    ("slot", _sg_slot_t),
    ("cmn", _sg_image_common_t),
    ("d3d11", c_int),
]

# _sg_sampler_s
_sg_sampler_s._fields_ = [
    ("slot", _sg_slot_t),
    ("cmn", _sg_sampler_common_t),
    ("d3d11", c_int),
]

# _sg_d3d11_shader_attr_t
_sg_d3d11_shader_attr_t._fields_ = [
    ("sem_name", _sg_str_t),
    ("sem_index", c_int),
]

# _sg_shader_s
_sg_shader_s._fields_ = [
    ("slot", _sg_slot_t),
    ("cmn", _sg_shader_common_t),
    ("d3d11", c_int),
]

# _sg_pipeline_s
_sg_pipeline_s._fields_ = [
    ("slot", _sg_slot_t),
    ("cmn", _sg_pipeline_common_t),
    ("d3d11", c_int),
]

# _sg_view_s
_sg_view_s._fields_ = [
    ("slot", _sg_slot_t),
    ("cmn", _sg_view_common_t),
    ("d3d11", c_int),
]

# _sg_d3d11_backend_t
_sg_d3d11_backend_t._fields_ = [
    ("valid", c_bool),
    ("dev", c_void_p),
    ("ctx", c_void_p),
    ("cur_swapchain", c_int),
    ("d3dcompiler_dll", c_int),
    ("d3dcompiler_dll_load_failed", c_bool),
    ("D3DCompile_func", c_int),
    ("bnd", c_int),
    ("subres_data", c_int * 32768),
]

# _sg_pools_s
_sg_pools_s._fields_ = [
    ("buffer_pool", _sg_pool_t),
    ("image_pool", _sg_pool_t),
    ("sampler_pool", _sg_pool_t),
    ("shader_pool", _sg_pool_t),
    ("pipeline_pool", _sg_pool_t),
    ("view_pool", _sg_pool_t),
    ("buffers", c_void_p),
    ("images", c_void_p),
    ("samplers", c_void_p),
    ("shaders", c_void_p),
    ("pipelines", c_void_p),
    ("views", c_void_p),
]

# _sg_commit_listeners_t
_sg_commit_listeners_t._fields_ = [
    ("num", c_int),
    ("upper", c_int),
    ("items", POINTER(sg_commit_listener)),
]

# _sg_attachments_ptrs_t
_sg_attachments_ptrs_t._fields_ = [
    ("empty", c_bool),
    ("num_color_views", c_int),
    ("color_views", c_void_p * 8),
    ("resolve_views", c_void_p * 8),
    ("ds_view", c_void_p),
]

# _sg_bindings_ptrs_t
_sg_bindings_ptrs_t._fields_ = [
    ("pip", c_void_p),
    ("vb_offsets", c_int * 8),
    ("ib_offset", c_int),
    ("vbs", c_void_p * 8),
    ("ib", c_void_p),
    ("views", c_void_p * 32),
    ("smps", c_void_p * 12),
]

# _sg_pixelformat_info_t
_sg_pixelformat_info_t._fields_ = [
    ("sample", c_bool),
    ("filter", c_bool),
    ("render", c_bool),
    ("blend", c_bool),
    ("msaa", c_bool),
    ("depth", c_bool),
    ("read", c_bool),
    ("write", c_bool),
]

# _sg_state_t
_sg_state_t._fields_ = [
    ("valid", c_bool),
    ("desc", sg_desc),
    ("frame_index", c_uint32),
    ("cur_pass", c_int),
    ("cur_pip", c_int),
    ("next_draw_valid", c_bool),
    ("use_indexed_draw", c_bool),
    ("use_instanced_draw", c_bool),
    ("required_bindings_and_uniforms", c_uint32),
    ("applied_bindings_and_uniforms", c_uint32),
    ("validate_error", c_int),
    ("pools", c_int),
    ("backend", c_int),
    ("features", sg_features),
    ("limits", sg_limits),
    ("formats", _sg_pixelformat_info_t * 68),
    ("stats_enabled", c_bool),
    ("stats", sg_stats),
    ("d3d11", _sg_d3d11_backend_t),
    ("commit_listeners", _sg_commit_listeners_t),
]

# _sg_u128_t
_sg_u128_t._fields_ = [
    ("lo", c_uint64),
    ("hi", c_uint64),
]

# sapp_touchpoint
sapp_touchpoint._fields_ = [
    ("identifier", c_size_t),
    ("pos_x", c_float),
    ("pos_y", c_float),
    ("android_tooltype", c_int),
    ("changed", c_bool),
]

# sapp_event
sapp_event._fields_ = [
    ("frame_count", c_uint64),
    ("type", c_int),
    ("key_code", c_int),
    ("char_code", c_uint32),
    ("key_repeat", c_bool),
    ("modifiers", c_uint32),
    ("mouse_button", c_int),
    ("mouse_x", c_float),
    ("mouse_y", c_float),
    ("mouse_dx", c_float),
    ("mouse_dy", c_float),
    ("scroll_x", c_float),
    ("scroll_y", c_float),
    ("num_touches", c_int),
    ("touches", sapp_touchpoint * 8),
    ("window_width", c_int),
    ("window_height", c_int),
    ("framebuffer_width", c_int),
    ("framebuffer_height", c_int),
]

# sapp_range
sapp_range._fields_ = [
    ("ptr", c_void_p),
    ("size", c_size_t),
]

# sapp_image_desc
sapp_image_desc._fields_ = [
    ("width", c_int),
    ("height", c_int),
    ("cursor_hotspot_x", c_int),
    ("cursor_hotspot_y", c_int),
    ("pixels", sapp_range),
]

# sapp_icon_desc
sapp_icon_desc._fields_ = [
    ("sokol_default", c_bool),
    ("images", sapp_image_desc * 8),
]

# sapp_allocator
sapp_allocator._fields_ = [
    ("alloc_fn", _FuncPtr_alloc_fn),
    ("free_fn", _FuncPtr_free_fn),
    ("user_data", c_void_p),
]

# sapp_environment_defaults
sapp_environment_defaults._fields_ = [
    ("color_format", c_int),
    ("depth_format", c_int),
    ("sample_count", c_int),
]

# sapp_metal_environment
sapp_metal_environment._fields_ = [
    ("device", c_void_p),
]

# sapp_d3d11_environment
sapp_d3d11_environment._fields_ = [
    ("device", c_void_p),
    ("device_context", c_void_p),
]

# sapp_wgpu_environment
sapp_wgpu_environment._fields_ = [
    ("device", c_void_p),
]

# sapp_vulkan_environment
sapp_vulkan_environment._fields_ = [
    ("instance", c_void_p),
    ("physical_device", c_void_p),
    ("device", c_void_p),
    ("queue", c_void_p),
    ("queue_family_index", c_uint32),
]

# sapp_environment
sapp_environment._fields_ = [
    ("defaults", sapp_environment_defaults),
    ("metal", sapp_metal_environment),
    ("d3d11", sapp_d3d11_environment),
    ("wgpu", sapp_wgpu_environment),
    ("vulkan", sapp_vulkan_environment),
]

# sapp_metal_swapchain
sapp_metal_swapchain._fields_ = [
    ("current_drawable", c_void_p),
    ("depth_stencil_texture", c_void_p),
    ("msaa_color_texture", c_void_p),
]

# sapp_d3d11_swapchain
sapp_d3d11_swapchain._fields_ = [
    ("render_view", c_void_p),
    ("resolve_view", c_void_p),
    ("depth_stencil_view", c_void_p),
]

# sapp_wgpu_swapchain
sapp_wgpu_swapchain._fields_ = [
    ("render_view", c_void_p),
    ("resolve_view", c_void_p),
    ("depth_stencil_view", c_void_p),
]

# sapp_vulkan_swapchain
sapp_vulkan_swapchain._fields_ = [
    ("render_image", c_void_p),
    ("render_view", c_void_p),
    ("resolve_image", c_void_p),
    ("resolve_view", c_void_p),
    ("depth_stencil_image", c_void_p),
    ("depth_stencil_view", c_void_p),
    ("render_finished_semaphore", c_void_p),
    ("present_complete_semaphore", c_void_p),
]

# sapp_gl_swapchain
sapp_gl_swapchain._fields_ = [
    ("framebuffer", c_uint32),
]

# sapp_swapchain
sapp_swapchain._fields_ = [
    ("width", c_int),
    ("height", c_int),
    ("sample_count", c_int),
    ("color_format", c_int),
    ("depth_format", c_int),
    ("metal", sapp_metal_swapchain),
    ("d3d11", sapp_d3d11_swapchain),
    ("wgpu", sapp_wgpu_swapchain),
    ("vulkan", sapp_vulkan_swapchain),
    ("gl", sapp_gl_swapchain),
]

# sapp_logger
sapp_logger._fields_ = [
    ("func", _FuncPtr_func),
    ("user_data", c_void_p),
]

# sapp_gl_desc
sapp_gl_desc._fields_ = [
    ("major_version", c_int),
    ("minor_version", c_int),
]

# sapp_win32_desc
sapp_win32_desc._fields_ = [
    ("console_utf8", c_bool),
    ("console_create", c_bool),
    ("console_attach", c_bool),
]

# sapp_html5_desc
sapp_html5_desc._fields_ = [
    ("canvas_selector", c_char_p),
    ("canvas_resize", c_bool),
    ("preserve_drawing_buffer", c_bool),
    ("premultiplied_alpha", c_bool),
    ("ask_leave_site", c_bool),
    ("update_document_title", c_bool),
    ("bubble_mouse_events", c_bool),
    ("bubble_touch_events", c_bool),
    ("bubble_wheel_events", c_bool),
    ("bubble_key_events", c_bool),
    ("bubble_char_events", c_bool),
    ("use_emsc_set_main_loop", c_bool),
    ("emsc_set_main_loop_simulate_infinite_loop", c_bool),
]

# sapp_ios_desc
sapp_ios_desc._fields_ = [
    ("keyboard_resizes_canvas", c_bool),
]

# sapp_desc
sapp_desc._fields_ = [
    ("init_cb", _FuncPtr_init_cb),
    ("frame_cb", _FuncPtr_frame_cb),
    ("cleanup_cb", _FuncPtr_cleanup_cb),
    ("event_cb", _FuncPtr_event_cb),
    ("user_data", c_void_p),
    ("init_userdata_cb", _FuncPtr_init_userdata_cb),
    ("frame_userdata_cb", _FuncPtr_frame_userdata_cb),
    ("cleanup_userdata_cb", _FuncPtr_cleanup_userdata_cb),
    ("event_userdata_cb", _FuncPtr_event_userdata_cb),
    ("width", c_int),
    ("height", c_int),
    ("sample_count", c_int),
    ("swap_interval", c_int),
    ("high_dpi", c_bool),
    ("fullscreen", c_bool),
    ("alpha", c_bool),
    ("window_title", c_char_p),
    ("enable_clipboard", c_bool),
    ("clipboard_size", c_int),
    ("enable_dragndrop", c_bool),
    ("max_dropped_files", c_int),
    ("max_dropped_file_path_length", c_int),
    ("icon", sapp_icon_desc),
    ("allocator", sapp_allocator),
    ("logger", sapp_logger),
    ("gl", sapp_gl_desc),
    ("win32", sapp_win32_desc),
    ("html5", sapp_html5_desc),
    ("ios", sapp_ios_desc),
]

# sapp_html5_fetch_response
sapp_html5_fetch_response._fields_ = [
    ("succeeded", c_bool),
    ("error_code", c_int),
    ("file_index", c_int),
    ("data", sapp_range),
    ("buffer", sapp_range),
    ("user_data", c_void_p),
]

# sapp_html5_fetch_request
sapp_html5_fetch_request._fields_ = [
    ("dropped_file_index", c_int),
    ("callback", _FuncPtr_callback),
    ("buffer", sapp_range),
    ("user_data", c_void_p),
]

# _sapp_ring_t
_sapp_ring_t._fields_ = [
    ("head", c_int),
    ("tail", c_int),
    ("buf", c_double * 256),
]

# _sapp_timestamp_t
_sapp_timestamp_t._fields_ = [
    ("win", c_int),
]

# _sapp_timing_t
_sapp_timing_t._fields_ = [
    ("last", c_double),
    ("accum", c_double),
    ("avg", c_double),
    ("spike_count", c_int),
    ("num", c_int),
    ("timestamp", _sapp_timestamp_t),
    ("ring", _sapp_ring_t),
]

# _sapp_d3d11_t
_sapp_d3d11_t._fields_ = [
    ("device", c_void_p),
    ("device_context", c_void_p),
    ("rt", c_void_p),
    ("rtv", c_void_p),
    ("msaa_rt", c_void_p),
    ("msaa_rtv", c_void_p),
    ("ds", c_void_p),
    ("dsv", c_void_p),
    ("swap_chain_desc", c_int),
    ("swap_chain", c_void_p),
    ("dxgi_device", c_void_p),
    ("use_dxgi_frame_stats", c_bool),
    ("sync_refresh_count", c_int),
]

# _sapp_win32_dpi_t
_sapp_win32_dpi_t._fields_ = [
    ("aware", c_bool),
    ("content_scale", c_float),
    ("window_scale", c_float),
    ("mouse_scale", c_float),
]

# _sapp_win32_t
_sapp_win32_t._fields_ = [
    ("hwnd", c_int),
    ("hmonitor", c_int),
    ("dc", c_int),
    ("big_icon", c_int),
    ("small_icon", c_int),
    ("standard_cursors", c_int * 27),
    ("custom_cursors", c_int * 27),
    ("orig_codepage", c_int),
    ("surrogate", c_int),
    ("stored_window_rect", c_int),
    ("is_win10_or_greater", c_bool),
    ("in_create_window", c_bool),
    ("iconified", c_bool),
    ("dpi", _sapp_win32_dpi_t),
    ("mouse", c_int),
    ("raw_input_data", c_int),
]

# _sapp_clipboard_t
_sapp_clipboard_t._fields_ = [
    ("enabled", c_bool),
    ("buf_size", c_int),
    ("buffer", c_char_p),
]

# _sapp_drop_t
_sapp_drop_t._fields_ = [
    ("enabled", c_bool),
    ("max_files", c_int),
    ("max_path_length", c_int),
    ("num_files", c_int),
    ("buf_size", c_int),
    ("buffer", c_char_p),
]

# _sapp_mouse_t
_sapp_mouse_t._fields_ = [
    ("x", c_float),
    ("y", c_float),
    ("dx", c_float),
    ("dy", c_float),
    ("shown", c_bool),
    ("locked", c_bool),
    ("pos_valid", c_bool),
    ("current_cursor", c_int),
]

# _sapp_t
_sapp_t._fields_ = [
    ("desc", sapp_desc),
    ("valid", c_bool),
    ("fullscreen", c_bool),
    ("first_frame", c_bool),
    ("init_called", c_bool),
    ("cleanup_called", c_bool),
    ("quit_requested", c_bool),
    ("quit_ordered", c_bool),
    ("event_consumed", c_bool),
    ("html5_ask_leave_site", c_bool),
    ("onscreen_keyboard_shown", c_bool),
    ("window_width", c_int),
    ("window_height", c_int),
    ("framebuffer_width", c_int),
    ("framebuffer_height", c_int),
    ("sample_count", c_int),
    ("swap_interval", c_int),
    ("dpi_scale", c_float),
    ("frame_count", c_uint64),
    ("timing", _sapp_timing_t),
    ("event", sapp_event),
    ("mouse", _sapp_mouse_t),
    ("clipboard", _sapp_clipboard_t),
    ("drop", _sapp_drop_t),
    ("default_icon_desc", sapp_icon_desc),
    ("default_icon_pixels", POINTER(c_uint32)),
    ("win32", _sapp_win32_t),
    ("d3d11", _sapp_d3d11_t),
    ("html5_canvas_selector", c_char * 128),
    ("window_title", c_char * 128),
    ("window_title_wide", c_wchar * 128),
    ("keycodes", c_int * 512),
    ("custom_cursor_bound", c_bool * 27),
]

# DPI_AWARENESS_CONTEXT_T__
DPI_AWARENESS_CONTEXT_T__._fields_ = [
    ("unused", c_int),
]

# =============================================================================
# Library Loader
# =============================================================================

_sokol_lib = None


def _get_lib_path() -> Path:
    """
    Get the path to the Sokol shared library for the current platform.
    
    Returns:
        Path to the platform-specific shared library
    
    Raises:
        RuntimeError: If the platform is not supported or library not found
    """
    import platform
    
    lib_dir = Path(__file__).parent / "lib"
    
    if sys.platform == "win32":
        lib_name = "sokol-windows-x64.dll"
    elif sys.platform == "darwin":
        # Check for Apple Silicon vs Intel
        machine = platform.machine().lower()
        if machine == "arm64":
            lib_name = "libsokol-macos-arm64.dylib"
        else:
            lib_name = "libsokol-macos-x64.dylib"
    elif sys.platform.startswith("linux"):
        lib_name = "libsokol-linux-x64.so"
    else:
        raise RuntimeError(f"Unsupported platform: {sys.platform}")
    
    lib_path = lib_dir / lib_name
    
    # Check if bundled library exists
    if lib_path.exists():
        return lib_path
    
    # Fallback: try current directory with platform-specific name
    local_path = Path(".") / lib_name
    if local_path.exists():
        return local_path
    
    # Fallback: try legacy names
    legacy_names = {
        "win32": ["sokol.dll", "sokol-dll.dll"],
        "darwin": ["libsokol.dylib", "sokol.dylib"],
        "linux": ["libsokol.so", "sokol.so"],
    }
    
    platform_key = "linux" if sys.platform.startswith("linux") else sys.platform
    for legacy_name in legacy_names.get(platform_key, []):
        for try_dir in [Path("."), Path(__file__).parent, lib_dir]:
            legacy_path = try_dir / legacy_name
            if legacy_path.exists():
                return legacy_path
    
    raise RuntimeError(
        f"Sokol library not found for {sys.platform}. "
        f"Expected: {lib_path}\n"
        f"You can download pre-built libraries from the GitHub releases page, "
        f"or build from source using the build-sokol workflow."
    )


def load_sokol(lib_path: Optional[str] = None) -> Any:
    """
    Load the Sokol shared library and set up function prototypes.
    
    This function automatically detects the current platform and loads
    the appropriate shared library (DLL on Windows, .so on Linux, 
    .dylib on macOS).
    
    Args:
        lib_path: Optional explicit path to the Sokol library.
                  If not provided, auto-detection is used.
    
    Returns:
        The loaded library object with all functions bound
    
    Raises:
        RuntimeError: If the library cannot be found or loaded
    
    Example:
        >>> from sokol.sokol_ahmedaliadeel import load_sokol
        >>> lib = load_sokol()  # Auto-detect
        >>> # or with explicit path:
        >>> lib = load_sokol('/path/to/libsokol.so')
    """
    global _sokol_lib
    
    if lib_path is not None:
        path = Path(lib_path)
        if not path.exists():
            raise RuntimeError(f"Sokol library not found at: {lib_path}")
    else:
        path = _get_lib_path()
    
    if sys.platform == 'win32':
        lib = ctypes.CDLL(str(path))
    elif sys.platform == 'darwin':
        lib = ctypes.CDLL(str(path))
    else:
        # Linux - use RTLD_GLOBAL for proper symbol resolution
        lib = ctypes.CDLL(str(path), mode=ctypes.RTLD_GLOBAL)
    
    _setup_function_prototypes(lib)
    _sokol_lib = lib
    return lib


def load_sokol_dll(dll_path: str = None) -> Any:
    """
    Load the Sokol DLL and set up function prototypes.
    
    .. deprecated::
        Use :func:`load_sokol` instead, which provides cross-platform support.
    
    Args:
        dll_path: Path to the Sokol DLL file. If None, auto-detection is used.
    
    Returns:
        The loaded library object with all functions bound
    """
    if dll_path is None:
        return load_sokol()
    return load_sokol(dll_path)

def _setup_function_prototypes(lib):
    """Set up ctypes function prototypes."""
    
    # slog_func
    if hasattr(lib, 'slog_func'):
        lib.slog_func.restype = None
        lib.slog_func.argtypes = [c_char_p, c_uint32, c_uint32, c_char_p, c_uint32, c_char_p, c_void_p]
    
    # sg_setup
    if hasattr(lib, 'sg_setup'):
        lib.sg_setup.restype = None
        lib.sg_setup.argtypes = [POINTER(sg_desc)]
    
    # sg_shutdown
    if hasattr(lib, 'sg_shutdown'):
        lib.sg_shutdown.restype = None
        lib.sg_shutdown.argtypes = []
    
    # sg_isvalid
    if hasattr(lib, 'sg_isvalid'):
        lib.sg_isvalid.restype = c_bool
        lib.sg_isvalid.argtypes = []
    
    # sg_reset_state_cache
    if hasattr(lib, 'sg_reset_state_cache'):
        lib.sg_reset_state_cache.restype = None
        lib.sg_reset_state_cache.argtypes = []
    
    # sg_install_trace_hooks
    if hasattr(lib, 'sg_install_trace_hooks'):
        lib.sg_install_trace_hooks.restype = sg_trace_hooks
        lib.sg_install_trace_hooks.argtypes = [POINTER(sg_trace_hooks)]
    
    # sg_push_debug_group
    if hasattr(lib, 'sg_push_debug_group'):
        lib.sg_push_debug_group.restype = None
        lib.sg_push_debug_group.argtypes = [c_char_p]
    
    # sg_pop_debug_group
    if hasattr(lib, 'sg_pop_debug_group'):
        lib.sg_pop_debug_group.restype = None
        lib.sg_pop_debug_group.argtypes = []
    
    # sg_add_commit_listener
    if hasattr(lib, 'sg_add_commit_listener'):
        lib.sg_add_commit_listener.restype = c_bool
        lib.sg_add_commit_listener.argtypes = [sg_commit_listener]
    
    # sg_remove_commit_listener
    if hasattr(lib, 'sg_remove_commit_listener'):
        lib.sg_remove_commit_listener.restype = c_bool
        lib.sg_remove_commit_listener.argtypes = [sg_commit_listener]
    
    # sg_make_buffer
    if hasattr(lib, 'sg_make_buffer'):
        lib.sg_make_buffer.restype = sg_buffer
        lib.sg_make_buffer.argtypes = [POINTER(sg_buffer_desc)]
    
    # sg_make_image
    if hasattr(lib, 'sg_make_image'):
        lib.sg_make_image.restype = sg_image
        lib.sg_make_image.argtypes = [POINTER(sg_image_desc)]
    
    # sg_make_sampler
    if hasattr(lib, 'sg_make_sampler'):
        lib.sg_make_sampler.restype = sg_sampler
        lib.sg_make_sampler.argtypes = [POINTER(sg_sampler_desc)]
    
    # sg_make_shader
    if hasattr(lib, 'sg_make_shader'):
        lib.sg_make_shader.restype = sg_shader
        lib.sg_make_shader.argtypes = [POINTER(sg_shader_desc)]
    
    # sg_make_pipeline
    if hasattr(lib, 'sg_make_pipeline'):
        lib.sg_make_pipeline.restype = sg_pipeline
        lib.sg_make_pipeline.argtypes = [POINTER(sg_pipeline_desc)]
    
    # sg_make_view
    if hasattr(lib, 'sg_make_view'):
        lib.sg_make_view.restype = sg_view
        lib.sg_make_view.argtypes = [POINTER(sg_view_desc)]
    
    # sg_destroy_buffer
    if hasattr(lib, 'sg_destroy_buffer'):
        lib.sg_destroy_buffer.restype = None
        lib.sg_destroy_buffer.argtypes = [sg_buffer]
    
    # sg_destroy_image
    if hasattr(lib, 'sg_destroy_image'):
        lib.sg_destroy_image.restype = None
        lib.sg_destroy_image.argtypes = [sg_image]
    
    # sg_destroy_sampler
    if hasattr(lib, 'sg_destroy_sampler'):
        lib.sg_destroy_sampler.restype = None
        lib.sg_destroy_sampler.argtypes = [sg_sampler]
    
    # sg_destroy_shader
    if hasattr(lib, 'sg_destroy_shader'):
        lib.sg_destroy_shader.restype = None
        lib.sg_destroy_shader.argtypes = [sg_shader]
    
    # sg_destroy_pipeline
    if hasattr(lib, 'sg_destroy_pipeline'):
        lib.sg_destroy_pipeline.restype = None
        lib.sg_destroy_pipeline.argtypes = [sg_pipeline]
    
    # sg_destroy_view
    if hasattr(lib, 'sg_destroy_view'):
        lib.sg_destroy_view.restype = None
        lib.sg_destroy_view.argtypes = [sg_view]
    
    # sg_update_buffer
    if hasattr(lib, 'sg_update_buffer'):
        lib.sg_update_buffer.restype = None
        lib.sg_update_buffer.argtypes = [sg_buffer, POINTER(sg_range)]
    
    # sg_update_image
    if hasattr(lib, 'sg_update_image'):
        lib.sg_update_image.restype = None
        lib.sg_update_image.argtypes = [sg_image, POINTER(sg_image_data)]
    
    # sg_append_buffer
    if hasattr(lib, 'sg_append_buffer'):
        lib.sg_append_buffer.restype = c_int
        lib.sg_append_buffer.argtypes = [sg_buffer, POINTER(sg_range)]
    
    # sg_query_buffer_overflow
    if hasattr(lib, 'sg_query_buffer_overflow'):
        lib.sg_query_buffer_overflow.restype = c_bool
        lib.sg_query_buffer_overflow.argtypes = [sg_buffer]
    
    # sg_query_buffer_will_overflow
    if hasattr(lib, 'sg_query_buffer_will_overflow'):
        lib.sg_query_buffer_will_overflow.restype = c_bool
        lib.sg_query_buffer_will_overflow.argtypes = [sg_buffer, c_size_t]
    
    # sg_begin_pass
    if hasattr(lib, 'sg_begin_pass'):
        lib.sg_begin_pass.restype = None
        lib.sg_begin_pass.argtypes = [POINTER(sg_pass)]
    
    # sg_apply_viewport
    if hasattr(lib, 'sg_apply_viewport'):
        lib.sg_apply_viewport.restype = None
        lib.sg_apply_viewport.argtypes = [c_int, c_int, c_int, c_int, c_bool]
    
    # sg_apply_viewportf
    if hasattr(lib, 'sg_apply_viewportf'):
        lib.sg_apply_viewportf.restype = None
        lib.sg_apply_viewportf.argtypes = [c_float, c_float, c_float, c_float, c_bool]
    
    # sg_apply_scissor_rect
    if hasattr(lib, 'sg_apply_scissor_rect'):
        lib.sg_apply_scissor_rect.restype = None
        lib.sg_apply_scissor_rect.argtypes = [c_int, c_int, c_int, c_int, c_bool]
    
    # sg_apply_scissor_rectf
    if hasattr(lib, 'sg_apply_scissor_rectf'):
        lib.sg_apply_scissor_rectf.restype = None
        lib.sg_apply_scissor_rectf.argtypes = [c_float, c_float, c_float, c_float, c_bool]
    
    # sg_apply_pipeline
    if hasattr(lib, 'sg_apply_pipeline'):
        lib.sg_apply_pipeline.restype = None
        lib.sg_apply_pipeline.argtypes = [sg_pipeline]
    
    # sg_apply_bindings
    if hasattr(lib, 'sg_apply_bindings'):
        lib.sg_apply_bindings.restype = None
        lib.sg_apply_bindings.argtypes = [POINTER(sg_bindings)]
    
    # sg_apply_uniforms
    if hasattr(lib, 'sg_apply_uniforms'):
        lib.sg_apply_uniforms.restype = None
        lib.sg_apply_uniforms.argtypes = [c_int, POINTER(sg_range)]
    
    # sg_draw
    if hasattr(lib, 'sg_draw'):
        lib.sg_draw.restype = None
        lib.sg_draw.argtypes = [c_int, c_int, c_int]
    
    # sg_draw_ex
    if hasattr(lib, 'sg_draw_ex'):
        lib.sg_draw_ex.restype = None
        lib.sg_draw_ex.argtypes = [c_int, c_int, c_int, c_int, c_int]
    
    # sg_dispatch
    if hasattr(lib, 'sg_dispatch'):
        lib.sg_dispatch.restype = None
        lib.sg_dispatch.argtypes = [c_int, c_int, c_int]
    
    # sg_end_pass
    if hasattr(lib, 'sg_end_pass'):
        lib.sg_end_pass.restype = None
        lib.sg_end_pass.argtypes = []
    
    # sg_commit
    if hasattr(lib, 'sg_commit'):
        lib.sg_commit.restype = None
        lib.sg_commit.argtypes = []
    
    # sg_query_desc
    if hasattr(lib, 'sg_query_desc'):
        lib.sg_query_desc.restype = sg_desc
        lib.sg_query_desc.argtypes = []
    
    # sg_query_backend
    if hasattr(lib, 'sg_query_backend'):
        lib.sg_query_backend.restype = c_int
        lib.sg_query_backend.argtypes = []
    
    # sg_query_features
    if hasattr(lib, 'sg_query_features'):
        lib.sg_query_features.restype = sg_features
        lib.sg_query_features.argtypes = []
    
    # sg_query_limits
    if hasattr(lib, 'sg_query_limits'):
        lib.sg_query_limits.restype = sg_limits
        lib.sg_query_limits.argtypes = []
    
    # sg_query_pixelformat
    if hasattr(lib, 'sg_query_pixelformat'):
        lib.sg_query_pixelformat.restype = sg_pixelformat_info
        lib.sg_query_pixelformat.argtypes = [c_int]
    
    # sg_query_row_pitch
    if hasattr(lib, 'sg_query_row_pitch'):
        lib.sg_query_row_pitch.restype = c_int
        lib.sg_query_row_pitch.argtypes = [c_int, c_int, c_int]
    
    # sg_query_surface_pitch
    if hasattr(lib, 'sg_query_surface_pitch'):
        lib.sg_query_surface_pitch.restype = c_int
        lib.sg_query_surface_pitch.argtypes = [c_int, c_int, c_int, c_int]
    
    # sg_query_buffer_state
    if hasattr(lib, 'sg_query_buffer_state'):
        lib.sg_query_buffer_state.restype = c_int
        lib.sg_query_buffer_state.argtypes = [sg_buffer]
    
    # sg_query_image_state
    if hasattr(lib, 'sg_query_image_state'):
        lib.sg_query_image_state.restype = c_int
        lib.sg_query_image_state.argtypes = [sg_image]
    
    # sg_query_sampler_state
    if hasattr(lib, 'sg_query_sampler_state'):
        lib.sg_query_sampler_state.restype = c_int
        lib.sg_query_sampler_state.argtypes = [sg_sampler]
    
    # sg_query_shader_state
    if hasattr(lib, 'sg_query_shader_state'):
        lib.sg_query_shader_state.restype = c_int
        lib.sg_query_shader_state.argtypes = [sg_shader]
    
    # sg_query_pipeline_state
    if hasattr(lib, 'sg_query_pipeline_state'):
        lib.sg_query_pipeline_state.restype = c_int
        lib.sg_query_pipeline_state.argtypes = [sg_pipeline]
    
    # sg_query_view_state
    if hasattr(lib, 'sg_query_view_state'):
        lib.sg_query_view_state.restype = c_int
        lib.sg_query_view_state.argtypes = [sg_view]
    
    # sg_query_buffer_info
    if hasattr(lib, 'sg_query_buffer_info'):
        lib.sg_query_buffer_info.restype = sg_buffer_info
        lib.sg_query_buffer_info.argtypes = [sg_buffer]
    
    # sg_query_image_info
    if hasattr(lib, 'sg_query_image_info'):
        lib.sg_query_image_info.restype = sg_image_info
        lib.sg_query_image_info.argtypes = [sg_image]
    
    # sg_query_sampler_info
    if hasattr(lib, 'sg_query_sampler_info'):
        lib.sg_query_sampler_info.restype = sg_sampler_info
        lib.sg_query_sampler_info.argtypes = [sg_sampler]
    
    # sg_query_shader_info
    if hasattr(lib, 'sg_query_shader_info'):
        lib.sg_query_shader_info.restype = sg_shader_info
        lib.sg_query_shader_info.argtypes = [sg_shader]
    
    # sg_query_pipeline_info
    if hasattr(lib, 'sg_query_pipeline_info'):
        lib.sg_query_pipeline_info.restype = sg_pipeline_info
        lib.sg_query_pipeline_info.argtypes = [sg_pipeline]
    
    # sg_query_view_info
    if hasattr(lib, 'sg_query_view_info'):
        lib.sg_query_view_info.restype = sg_view_info
        lib.sg_query_view_info.argtypes = [sg_view]
    
    # sg_query_buffer_desc
    if hasattr(lib, 'sg_query_buffer_desc'):
        lib.sg_query_buffer_desc.restype = sg_buffer_desc
        lib.sg_query_buffer_desc.argtypes = [sg_buffer]
    
    # sg_query_image_desc
    if hasattr(lib, 'sg_query_image_desc'):
        lib.sg_query_image_desc.restype = sg_image_desc
        lib.sg_query_image_desc.argtypes = [sg_image]
    
    # sg_query_sampler_desc
    if hasattr(lib, 'sg_query_sampler_desc'):
        lib.sg_query_sampler_desc.restype = sg_sampler_desc
        lib.sg_query_sampler_desc.argtypes = [sg_sampler]
    
    # sg_query_shader_desc
    if hasattr(lib, 'sg_query_shader_desc'):
        lib.sg_query_shader_desc.restype = sg_shader_desc
        lib.sg_query_shader_desc.argtypes = [sg_shader]
    
    # sg_query_pipeline_desc
    if hasattr(lib, 'sg_query_pipeline_desc'):
        lib.sg_query_pipeline_desc.restype = sg_pipeline_desc
        lib.sg_query_pipeline_desc.argtypes = [sg_pipeline]
    
    # sg_query_view_desc
    if hasattr(lib, 'sg_query_view_desc'):
        lib.sg_query_view_desc.restype = sg_view_desc
        lib.sg_query_view_desc.argtypes = [sg_view]
    
    # sg_query_buffer_defaults
    if hasattr(lib, 'sg_query_buffer_defaults'):
        lib.sg_query_buffer_defaults.restype = sg_buffer_desc
        lib.sg_query_buffer_defaults.argtypes = [POINTER(sg_buffer_desc)]
    
    # sg_query_image_defaults
    if hasattr(lib, 'sg_query_image_defaults'):
        lib.sg_query_image_defaults.restype = sg_image_desc
        lib.sg_query_image_defaults.argtypes = [POINTER(sg_image_desc)]
    
    # sg_query_sampler_defaults
    if hasattr(lib, 'sg_query_sampler_defaults'):
        lib.sg_query_sampler_defaults.restype = sg_sampler_desc
        lib.sg_query_sampler_defaults.argtypes = [POINTER(sg_sampler_desc)]
    
    # sg_query_shader_defaults
    if hasattr(lib, 'sg_query_shader_defaults'):
        lib.sg_query_shader_defaults.restype = sg_shader_desc
        lib.sg_query_shader_defaults.argtypes = [POINTER(sg_shader_desc)]
    
    # sg_query_pipeline_defaults
    if hasattr(lib, 'sg_query_pipeline_defaults'):
        lib.sg_query_pipeline_defaults.restype = sg_pipeline_desc
        lib.sg_query_pipeline_defaults.argtypes = [POINTER(sg_pipeline_desc)]
    
    # sg_query_view_defaults
    if hasattr(lib, 'sg_query_view_defaults'):
        lib.sg_query_view_defaults.restype = sg_view_desc
        lib.sg_query_view_defaults.argtypes = [POINTER(sg_view_desc)]
    
    # sg_query_buffer_size
    if hasattr(lib, 'sg_query_buffer_size'):
        lib.sg_query_buffer_size.restype = c_size_t
        lib.sg_query_buffer_size.argtypes = [sg_buffer]
    
    # sg_query_buffer_usage
    if hasattr(lib, 'sg_query_buffer_usage'):
        lib.sg_query_buffer_usage.restype = sg_buffer_usage
        lib.sg_query_buffer_usage.argtypes = [sg_buffer]
    
    # sg_query_image_type
    if hasattr(lib, 'sg_query_image_type'):
        lib.sg_query_image_type.restype = c_int
        lib.sg_query_image_type.argtypes = [sg_image]
    
    # sg_query_image_width
    if hasattr(lib, 'sg_query_image_width'):
        lib.sg_query_image_width.restype = c_int
        lib.sg_query_image_width.argtypes = [sg_image]
    
    # sg_query_image_height
    if hasattr(lib, 'sg_query_image_height'):
        lib.sg_query_image_height.restype = c_int
        lib.sg_query_image_height.argtypes = [sg_image]
    
    # sg_query_image_num_slices
    if hasattr(lib, 'sg_query_image_num_slices'):
        lib.sg_query_image_num_slices.restype = c_int
        lib.sg_query_image_num_slices.argtypes = [sg_image]
    
    # sg_query_image_num_mipmaps
    if hasattr(lib, 'sg_query_image_num_mipmaps'):
        lib.sg_query_image_num_mipmaps.restype = c_int
        lib.sg_query_image_num_mipmaps.argtypes = [sg_image]
    
    # sg_query_image_pixelformat
    if hasattr(lib, 'sg_query_image_pixelformat'):
        lib.sg_query_image_pixelformat.restype = c_int
        lib.sg_query_image_pixelformat.argtypes = [sg_image]
    
    # sg_query_image_usage
    if hasattr(lib, 'sg_query_image_usage'):
        lib.sg_query_image_usage.restype = sg_image_usage
        lib.sg_query_image_usage.argtypes = [sg_image]
    
    # sg_query_image_sample_count
    if hasattr(lib, 'sg_query_image_sample_count'):
        lib.sg_query_image_sample_count.restype = c_int
        lib.sg_query_image_sample_count.argtypes = [sg_image]
    
    # sg_query_view_type
    if hasattr(lib, 'sg_query_view_type'):
        lib.sg_query_view_type.restype = c_int
        lib.sg_query_view_type.argtypes = [sg_view]
    
    # sg_query_view_image
    if hasattr(lib, 'sg_query_view_image'):
        lib.sg_query_view_image.restype = sg_image
        lib.sg_query_view_image.argtypes = [sg_view]
    
    # sg_query_view_buffer
    if hasattr(lib, 'sg_query_view_buffer'):
        lib.sg_query_view_buffer.restype = sg_buffer
        lib.sg_query_view_buffer.argtypes = [sg_view]
    
    # sg_alloc_buffer
    if hasattr(lib, 'sg_alloc_buffer'):
        lib.sg_alloc_buffer.restype = sg_buffer
        lib.sg_alloc_buffer.argtypes = []
    
    # sg_alloc_image
    if hasattr(lib, 'sg_alloc_image'):
        lib.sg_alloc_image.restype = sg_image
        lib.sg_alloc_image.argtypes = []
    
    # sg_alloc_sampler
    if hasattr(lib, 'sg_alloc_sampler'):
        lib.sg_alloc_sampler.restype = sg_sampler
        lib.sg_alloc_sampler.argtypes = []
    
    # sg_alloc_shader
    if hasattr(lib, 'sg_alloc_shader'):
        lib.sg_alloc_shader.restype = sg_shader
        lib.sg_alloc_shader.argtypes = []
    
    # sg_alloc_pipeline
    if hasattr(lib, 'sg_alloc_pipeline'):
        lib.sg_alloc_pipeline.restype = sg_pipeline
        lib.sg_alloc_pipeline.argtypes = []
    
    # sg_alloc_view
    if hasattr(lib, 'sg_alloc_view'):
        lib.sg_alloc_view.restype = sg_view
        lib.sg_alloc_view.argtypes = []
    
    # sg_dealloc_buffer
    if hasattr(lib, 'sg_dealloc_buffer'):
        lib.sg_dealloc_buffer.restype = None
        lib.sg_dealloc_buffer.argtypes = [sg_buffer]
    
    # sg_dealloc_image
    if hasattr(lib, 'sg_dealloc_image'):
        lib.sg_dealloc_image.restype = None
        lib.sg_dealloc_image.argtypes = [sg_image]
    
    # sg_dealloc_sampler
    if hasattr(lib, 'sg_dealloc_sampler'):
        lib.sg_dealloc_sampler.restype = None
        lib.sg_dealloc_sampler.argtypes = [sg_sampler]
    
    # sg_dealloc_shader
    if hasattr(lib, 'sg_dealloc_shader'):
        lib.sg_dealloc_shader.restype = None
        lib.sg_dealloc_shader.argtypes = [sg_shader]
    
    # sg_dealloc_pipeline
    if hasattr(lib, 'sg_dealloc_pipeline'):
        lib.sg_dealloc_pipeline.restype = None
        lib.sg_dealloc_pipeline.argtypes = [sg_pipeline]
    
    # sg_dealloc_view
    if hasattr(lib, 'sg_dealloc_view'):
        lib.sg_dealloc_view.restype = None
        lib.sg_dealloc_view.argtypes = [sg_view]
    
    # sg_init_buffer
    if hasattr(lib, 'sg_init_buffer'):
        lib.sg_init_buffer.restype = None
        lib.sg_init_buffer.argtypes = [sg_buffer, POINTER(sg_buffer_desc)]
    
    # sg_init_image
    if hasattr(lib, 'sg_init_image'):
        lib.sg_init_image.restype = None
        lib.sg_init_image.argtypes = [sg_image, POINTER(sg_image_desc)]
    
    # sg_init_sampler
    if hasattr(lib, 'sg_init_sampler'):
        lib.sg_init_sampler.restype = None
        lib.sg_init_sampler.argtypes = [sg_sampler, POINTER(sg_sampler_desc)]
    
    # sg_init_shader
    if hasattr(lib, 'sg_init_shader'):
        lib.sg_init_shader.restype = None
        lib.sg_init_shader.argtypes = [sg_shader, POINTER(sg_shader_desc)]
    
    # sg_init_pipeline
    if hasattr(lib, 'sg_init_pipeline'):
        lib.sg_init_pipeline.restype = None
        lib.sg_init_pipeline.argtypes = [sg_pipeline, POINTER(sg_pipeline_desc)]
    
    # sg_init_view
    if hasattr(lib, 'sg_init_view'):
        lib.sg_init_view.restype = None
        lib.sg_init_view.argtypes = [sg_view, POINTER(sg_view_desc)]
    
    # sg_uninit_buffer
    if hasattr(lib, 'sg_uninit_buffer'):
        lib.sg_uninit_buffer.restype = None
        lib.sg_uninit_buffer.argtypes = [sg_buffer]
    
    # sg_uninit_image
    if hasattr(lib, 'sg_uninit_image'):
        lib.sg_uninit_image.restype = None
        lib.sg_uninit_image.argtypes = [sg_image]
    
    # sg_uninit_sampler
    if hasattr(lib, 'sg_uninit_sampler'):
        lib.sg_uninit_sampler.restype = None
        lib.sg_uninit_sampler.argtypes = [sg_sampler]
    
    # sg_uninit_shader
    if hasattr(lib, 'sg_uninit_shader'):
        lib.sg_uninit_shader.restype = None
        lib.sg_uninit_shader.argtypes = [sg_shader]
    
    # sg_uninit_pipeline
    if hasattr(lib, 'sg_uninit_pipeline'):
        lib.sg_uninit_pipeline.restype = None
        lib.sg_uninit_pipeline.argtypes = [sg_pipeline]
    
    # sg_uninit_view
    if hasattr(lib, 'sg_uninit_view'):
        lib.sg_uninit_view.restype = None
        lib.sg_uninit_view.argtypes = [sg_view]
    
    # sg_fail_buffer
    if hasattr(lib, 'sg_fail_buffer'):
        lib.sg_fail_buffer.restype = None
        lib.sg_fail_buffer.argtypes = [sg_buffer]
    
    # sg_fail_image
    if hasattr(lib, 'sg_fail_image'):
        lib.sg_fail_image.restype = None
        lib.sg_fail_image.argtypes = [sg_image]
    
    # sg_fail_sampler
    if hasattr(lib, 'sg_fail_sampler'):
        lib.sg_fail_sampler.restype = None
        lib.sg_fail_sampler.argtypes = [sg_sampler]
    
    # sg_fail_shader
    if hasattr(lib, 'sg_fail_shader'):
        lib.sg_fail_shader.restype = None
        lib.sg_fail_shader.argtypes = [sg_shader]
    
    # sg_fail_pipeline
    if hasattr(lib, 'sg_fail_pipeline'):
        lib.sg_fail_pipeline.restype = None
        lib.sg_fail_pipeline.argtypes = [sg_pipeline]
    
    # sg_fail_view
    if hasattr(lib, 'sg_fail_view'):
        lib.sg_fail_view.restype = None
        lib.sg_fail_view.argtypes = [sg_view]
    
    # sg_enable_stats
    if hasattr(lib, 'sg_enable_stats'):
        lib.sg_enable_stats.restype = None
        lib.sg_enable_stats.argtypes = []
    
    # sg_disable_stats
    if hasattr(lib, 'sg_disable_stats'):
        lib.sg_disable_stats.restype = None
        lib.sg_disable_stats.argtypes = []
    
    # sg_stats_enabled
    if hasattr(lib, 'sg_stats_enabled'):
        lib.sg_stats_enabled.restype = c_bool
        lib.sg_stats_enabled.argtypes = []
    
    # sg_query_stats
    if hasattr(lib, 'sg_query_stats'):
        lib.sg_query_stats.restype = sg_stats
        lib.sg_query_stats.argtypes = []
    
    # sg_d3d11_device
    if hasattr(lib, 'sg_d3d11_device'):
        lib.sg_d3d11_device.restype = c_void_p
        lib.sg_d3d11_device.argtypes = []
    
    # sg_d3d11_device_context
    if hasattr(lib, 'sg_d3d11_device_context'):
        lib.sg_d3d11_device_context.restype = c_void_p
        lib.sg_d3d11_device_context.argtypes = []
    
    # sg_d3d11_query_buffer_info
    if hasattr(lib, 'sg_d3d11_query_buffer_info'):
        lib.sg_d3d11_query_buffer_info.restype = sg_d3d11_buffer_info
        lib.sg_d3d11_query_buffer_info.argtypes = [sg_buffer]
    
    # sg_d3d11_query_image_info
    if hasattr(lib, 'sg_d3d11_query_image_info'):
        lib.sg_d3d11_query_image_info.restype = sg_d3d11_image_info
        lib.sg_d3d11_query_image_info.argtypes = [sg_image]
    
    # sg_d3d11_query_sampler_info
    if hasattr(lib, 'sg_d3d11_query_sampler_info'):
        lib.sg_d3d11_query_sampler_info.restype = sg_d3d11_sampler_info
        lib.sg_d3d11_query_sampler_info.argtypes = [sg_sampler]
    
    # sg_d3d11_query_shader_info
    if hasattr(lib, 'sg_d3d11_query_shader_info'):
        lib.sg_d3d11_query_shader_info.restype = sg_d3d11_shader_info
        lib.sg_d3d11_query_shader_info.argtypes = [sg_shader]
    
    # sg_d3d11_query_pipeline_info
    if hasattr(lib, 'sg_d3d11_query_pipeline_info'):
        lib.sg_d3d11_query_pipeline_info.restype = sg_d3d11_pipeline_info
        lib.sg_d3d11_query_pipeline_info.argtypes = [sg_pipeline]
    
    # sg_d3d11_query_view_info
    if hasattr(lib, 'sg_d3d11_query_view_info'):
        lib.sg_d3d11_query_view_info.restype = sg_d3d11_view_info
        lib.sg_d3d11_query_view_info.argtypes = [sg_view]
    
    # sg_mtl_device
    if hasattr(lib, 'sg_mtl_device'):
        lib.sg_mtl_device.restype = c_void_p
        lib.sg_mtl_device.argtypes = []
    
    # sg_mtl_render_command_encoder
    if hasattr(lib, 'sg_mtl_render_command_encoder'):
        lib.sg_mtl_render_command_encoder.restype = c_void_p
        lib.sg_mtl_render_command_encoder.argtypes = []
    
    # sg_mtl_compute_command_encoder
    if hasattr(lib, 'sg_mtl_compute_command_encoder'):
        lib.sg_mtl_compute_command_encoder.restype = c_void_p
        lib.sg_mtl_compute_command_encoder.argtypes = []
    
    # sg_mtl_command_queue
    if hasattr(lib, 'sg_mtl_command_queue'):
        lib.sg_mtl_command_queue.restype = c_void_p
        lib.sg_mtl_command_queue.argtypes = []
    
    # sg_mtl_query_buffer_info
    if hasattr(lib, 'sg_mtl_query_buffer_info'):
        lib.sg_mtl_query_buffer_info.restype = sg_mtl_buffer_info
        lib.sg_mtl_query_buffer_info.argtypes = [sg_buffer]
    
    # sg_mtl_query_image_info
    if hasattr(lib, 'sg_mtl_query_image_info'):
        lib.sg_mtl_query_image_info.restype = sg_mtl_image_info
        lib.sg_mtl_query_image_info.argtypes = [sg_image]
    
    # sg_mtl_query_sampler_info
    if hasattr(lib, 'sg_mtl_query_sampler_info'):
        lib.sg_mtl_query_sampler_info.restype = sg_mtl_sampler_info
        lib.sg_mtl_query_sampler_info.argtypes = [sg_sampler]
    
    # sg_mtl_query_shader_info
    if hasattr(lib, 'sg_mtl_query_shader_info'):
        lib.sg_mtl_query_shader_info.restype = sg_mtl_shader_info
        lib.sg_mtl_query_shader_info.argtypes = [sg_shader]
    
    # sg_mtl_query_pipeline_info
    if hasattr(lib, 'sg_mtl_query_pipeline_info'):
        lib.sg_mtl_query_pipeline_info.restype = sg_mtl_pipeline_info
        lib.sg_mtl_query_pipeline_info.argtypes = [sg_pipeline]
    
    # sg_wgpu_device
    if hasattr(lib, 'sg_wgpu_device'):
        lib.sg_wgpu_device.restype = c_void_p
        lib.sg_wgpu_device.argtypes = []
    
    # sg_wgpu_queue
    if hasattr(lib, 'sg_wgpu_queue'):
        lib.sg_wgpu_queue.restype = c_void_p
        lib.sg_wgpu_queue.argtypes = []
    
    # sg_wgpu_command_encoder
    if hasattr(lib, 'sg_wgpu_command_encoder'):
        lib.sg_wgpu_command_encoder.restype = c_void_p
        lib.sg_wgpu_command_encoder.argtypes = []
    
    # sg_wgpu_render_pass_encoder
    if hasattr(lib, 'sg_wgpu_render_pass_encoder'):
        lib.sg_wgpu_render_pass_encoder.restype = c_void_p
        lib.sg_wgpu_render_pass_encoder.argtypes = []
    
    # sg_wgpu_compute_pass_encoder
    if hasattr(lib, 'sg_wgpu_compute_pass_encoder'):
        lib.sg_wgpu_compute_pass_encoder.restype = c_void_p
        lib.sg_wgpu_compute_pass_encoder.argtypes = []
    
    # sg_wgpu_query_buffer_info
    if hasattr(lib, 'sg_wgpu_query_buffer_info'):
        lib.sg_wgpu_query_buffer_info.restype = sg_wgpu_buffer_info
        lib.sg_wgpu_query_buffer_info.argtypes = [sg_buffer]
    
    # sg_wgpu_query_image_info
    if hasattr(lib, 'sg_wgpu_query_image_info'):
        lib.sg_wgpu_query_image_info.restype = sg_wgpu_image_info
        lib.sg_wgpu_query_image_info.argtypes = [sg_image]
    
    # sg_wgpu_query_sampler_info
    if hasattr(lib, 'sg_wgpu_query_sampler_info'):
        lib.sg_wgpu_query_sampler_info.restype = sg_wgpu_sampler_info
        lib.sg_wgpu_query_sampler_info.argtypes = [sg_sampler]
    
    # sg_wgpu_query_shader_info
    if hasattr(lib, 'sg_wgpu_query_shader_info'):
        lib.sg_wgpu_query_shader_info.restype = sg_wgpu_shader_info
        lib.sg_wgpu_query_shader_info.argtypes = [sg_shader]
    
    # sg_wgpu_query_pipeline_info
    if hasattr(lib, 'sg_wgpu_query_pipeline_info'):
        lib.sg_wgpu_query_pipeline_info.restype = sg_wgpu_pipeline_info
        lib.sg_wgpu_query_pipeline_info.argtypes = [sg_pipeline]
    
    # sg_wgpu_query_view_info
    if hasattr(lib, 'sg_wgpu_query_view_info'):
        lib.sg_wgpu_query_view_info.restype = sg_wgpu_view_info
        lib.sg_wgpu_query_view_info.argtypes = [sg_view]
    
    # sg_gl_query_buffer_info
    if hasattr(lib, 'sg_gl_query_buffer_info'):
        lib.sg_gl_query_buffer_info.restype = sg_gl_buffer_info
        lib.sg_gl_query_buffer_info.argtypes = [sg_buffer]
    
    # sg_gl_query_image_info
    if hasattr(lib, 'sg_gl_query_image_info'):
        lib.sg_gl_query_image_info.restype = sg_gl_image_info
        lib.sg_gl_query_image_info.argtypes = [sg_image]
    
    # sg_gl_query_sampler_info
    if hasattr(lib, 'sg_gl_query_sampler_info'):
        lib.sg_gl_query_sampler_info.restype = sg_gl_sampler_info
        lib.sg_gl_query_sampler_info.argtypes = [sg_sampler]
    
    # sg_gl_query_shader_info
    if hasattr(lib, 'sg_gl_query_shader_info'):
        lib.sg_gl_query_shader_info.restype = sg_gl_shader_info
        lib.sg_gl_query_shader_info.argtypes = [sg_shader]
    
    # sg_gl_query_view_info
    if hasattr(lib, 'sg_gl_query_view_info'):
        lib.sg_gl_query_view_info.restype = sg_gl_view_info
        lib.sg_gl_query_view_info.argtypes = [sg_view]
    
    # sapp_isvalid
    if hasattr(lib, 'sapp_isvalid'):
        lib.sapp_isvalid.restype = c_bool
        lib.sapp_isvalid.argtypes = []
    
    # sapp_width
    if hasattr(lib, 'sapp_width'):
        lib.sapp_width.restype = c_int
        lib.sapp_width.argtypes = []
    
    # sapp_widthf
    if hasattr(lib, 'sapp_widthf'):
        lib.sapp_widthf.restype = c_float
        lib.sapp_widthf.argtypes = []
    
    # sapp_height
    if hasattr(lib, 'sapp_height'):
        lib.sapp_height.restype = c_int
        lib.sapp_height.argtypes = []
    
    # sapp_heightf
    if hasattr(lib, 'sapp_heightf'):
        lib.sapp_heightf.restype = c_float
        lib.sapp_heightf.argtypes = []
    
    # sapp_color_format
    if hasattr(lib, 'sapp_color_format'):
        lib.sapp_color_format.restype = c_int
        lib.sapp_color_format.argtypes = []
    
    # sapp_depth_format
    if hasattr(lib, 'sapp_depth_format'):
        lib.sapp_depth_format.restype = c_int
        lib.sapp_depth_format.argtypes = []
    
    # sapp_sample_count
    if hasattr(lib, 'sapp_sample_count'):
        lib.sapp_sample_count.restype = c_int
        lib.sapp_sample_count.argtypes = []
    
    # sapp_high_dpi
    if hasattr(lib, 'sapp_high_dpi'):
        lib.sapp_high_dpi.restype = c_bool
        lib.sapp_high_dpi.argtypes = []
    
    # sapp_dpi_scale
    if hasattr(lib, 'sapp_dpi_scale'):
        lib.sapp_dpi_scale.restype = c_float
        lib.sapp_dpi_scale.argtypes = []
    
    # sapp_show_keyboard
    if hasattr(lib, 'sapp_show_keyboard'):
        lib.sapp_show_keyboard.restype = None
        lib.sapp_show_keyboard.argtypes = [c_bool]
    
    # sapp_keyboard_shown
    if hasattr(lib, 'sapp_keyboard_shown'):
        lib.sapp_keyboard_shown.restype = c_bool
        lib.sapp_keyboard_shown.argtypes = []
    
    # sapp_is_fullscreen
    if hasattr(lib, 'sapp_is_fullscreen'):
        lib.sapp_is_fullscreen.restype = c_bool
        lib.sapp_is_fullscreen.argtypes = []
    
    # sapp_toggle_fullscreen
    if hasattr(lib, 'sapp_toggle_fullscreen'):
        lib.sapp_toggle_fullscreen.restype = None
        lib.sapp_toggle_fullscreen.argtypes = []
    
    # sapp_show_mouse
    if hasattr(lib, 'sapp_show_mouse'):
        lib.sapp_show_mouse.restype = None
        lib.sapp_show_mouse.argtypes = [c_bool]
    
    # sapp_mouse_shown
    if hasattr(lib, 'sapp_mouse_shown'):
        lib.sapp_mouse_shown.restype = c_bool
        lib.sapp_mouse_shown.argtypes = []
    
    # sapp_lock_mouse
    if hasattr(lib, 'sapp_lock_mouse'):
        lib.sapp_lock_mouse.restype = None
        lib.sapp_lock_mouse.argtypes = [c_bool]
    
    # sapp_mouse_locked
    if hasattr(lib, 'sapp_mouse_locked'):
        lib.sapp_mouse_locked.restype = c_bool
        lib.sapp_mouse_locked.argtypes = []
    
    # sapp_set_mouse_cursor
    if hasattr(lib, 'sapp_set_mouse_cursor'):
        lib.sapp_set_mouse_cursor.restype = None
        lib.sapp_set_mouse_cursor.argtypes = [c_int]
    
    # sapp_get_mouse_cursor
    if hasattr(lib, 'sapp_get_mouse_cursor'):
        lib.sapp_get_mouse_cursor.restype = c_int
        lib.sapp_get_mouse_cursor.argtypes = []
    
    # sapp_bind_mouse_cursor_image
    if hasattr(lib, 'sapp_bind_mouse_cursor_image'):
        lib.sapp_bind_mouse_cursor_image.restype = c_int
        lib.sapp_bind_mouse_cursor_image.argtypes = [c_int, POINTER(sapp_image_desc)]
    
    # sapp_unbind_mouse_cursor_image
    if hasattr(lib, 'sapp_unbind_mouse_cursor_image'):
        lib.sapp_unbind_mouse_cursor_image.restype = None
        lib.sapp_unbind_mouse_cursor_image.argtypes = [c_int]
    
    # sapp_userdata
    if hasattr(lib, 'sapp_userdata'):
        lib.sapp_userdata.restype = c_void_p
        lib.sapp_userdata.argtypes = []
    
    # sapp_query_desc
    if hasattr(lib, 'sapp_query_desc'):
        lib.sapp_query_desc.restype = sapp_desc
        lib.sapp_query_desc.argtypes = []
    
    # sapp_request_quit
    if hasattr(lib, 'sapp_request_quit'):
        lib.sapp_request_quit.restype = None
        lib.sapp_request_quit.argtypes = []
    
    # sapp_cancel_quit
    if hasattr(lib, 'sapp_cancel_quit'):
        lib.sapp_cancel_quit.restype = None
        lib.sapp_cancel_quit.argtypes = []
    
    # sapp_quit
    if hasattr(lib, 'sapp_quit'):
        lib.sapp_quit.restype = None
        lib.sapp_quit.argtypes = []
    
    # sapp_consume_event
    if hasattr(lib, 'sapp_consume_event'):
        lib.sapp_consume_event.restype = None
        lib.sapp_consume_event.argtypes = []
    
    # sapp_frame_count
    if hasattr(lib, 'sapp_frame_count'):
        lib.sapp_frame_count.restype = c_uint64
        lib.sapp_frame_count.argtypes = []
    
    # sapp_frame_duration
    if hasattr(lib, 'sapp_frame_duration'):
        lib.sapp_frame_duration.restype = c_double
        lib.sapp_frame_duration.argtypes = []
    
    # sapp_set_clipboard_string
    if hasattr(lib, 'sapp_set_clipboard_string'):
        lib.sapp_set_clipboard_string.restype = None
        lib.sapp_set_clipboard_string.argtypes = [c_char_p]
    
    # sapp_get_clipboard_string
    if hasattr(lib, 'sapp_get_clipboard_string'):
        lib.sapp_get_clipboard_string.restype = c_char_p
        lib.sapp_get_clipboard_string.argtypes = []
    
    # sapp_set_window_title
    if hasattr(lib, 'sapp_set_window_title'):
        lib.sapp_set_window_title.restype = None
        lib.sapp_set_window_title.argtypes = [c_char_p]
    
    # sapp_set_icon
    if hasattr(lib, 'sapp_set_icon'):
        lib.sapp_set_icon.restype = None
        lib.sapp_set_icon.argtypes = [POINTER(sapp_icon_desc)]
    
    # sapp_get_num_dropped_files
    if hasattr(lib, 'sapp_get_num_dropped_files'):
        lib.sapp_get_num_dropped_files.restype = c_int
        lib.sapp_get_num_dropped_files.argtypes = []
    
    # sapp_get_dropped_file_path
    if hasattr(lib, 'sapp_get_dropped_file_path'):
        lib.sapp_get_dropped_file_path.restype = c_char_p
        lib.sapp_get_dropped_file_path.argtypes = [c_int]
    
    # sapp_run
    if hasattr(lib, 'sapp_run'):
        lib.sapp_run.restype = None
        lib.sapp_run.argtypes = [POINTER(sapp_desc)]
    
    # sapp_get_environment
    if hasattr(lib, 'sapp_get_environment'):
        lib.sapp_get_environment.restype = sapp_environment
        lib.sapp_get_environment.argtypes = []
    
    # sapp_get_swapchain
    if hasattr(lib, 'sapp_get_swapchain'):
        lib.sapp_get_swapchain.restype = sapp_swapchain
        lib.sapp_get_swapchain.argtypes = []
    
    # sapp_egl_get_display
    if hasattr(lib, 'sapp_egl_get_display'):
        lib.sapp_egl_get_display.restype = c_void_p
        lib.sapp_egl_get_display.argtypes = []
    
    # sapp_egl_get_context
    if hasattr(lib, 'sapp_egl_get_context'):
        lib.sapp_egl_get_context.restype = c_void_p
        lib.sapp_egl_get_context.argtypes = []
    
    # sapp_html5_ask_leave_site
    if hasattr(lib, 'sapp_html5_ask_leave_site'):
        lib.sapp_html5_ask_leave_site.restype = None
        lib.sapp_html5_ask_leave_site.argtypes = [c_bool]
    
    # sapp_html5_get_dropped_file_size
    if hasattr(lib, 'sapp_html5_get_dropped_file_size'):
        lib.sapp_html5_get_dropped_file_size.restype = c_uint32
        lib.sapp_html5_get_dropped_file_size.argtypes = [c_int]
    
    # sapp_html5_fetch_dropped_file
    if hasattr(lib, 'sapp_html5_fetch_dropped_file'):
        lib.sapp_html5_fetch_dropped_file.restype = None
        lib.sapp_html5_fetch_dropped_file.argtypes = [POINTER(sapp_html5_fetch_request)]
    
    # sapp_macos_get_window
    if hasattr(lib, 'sapp_macos_get_window'):
        lib.sapp_macos_get_window.restype = c_void_p
        lib.sapp_macos_get_window.argtypes = []
    
    # sapp_ios_get_window
    if hasattr(lib, 'sapp_ios_get_window'):
        lib.sapp_ios_get_window.restype = c_void_p
        lib.sapp_ios_get_window.argtypes = []
    
    # sapp_d3d11_get_swap_chain
    if hasattr(lib, 'sapp_d3d11_get_swap_chain'):
        lib.sapp_d3d11_get_swap_chain.restype = c_void_p
        lib.sapp_d3d11_get_swap_chain.argtypes = []
    
    # sapp_win32_get_hwnd
    if hasattr(lib, 'sapp_win32_get_hwnd'):
        lib.sapp_win32_get_hwnd.restype = c_void_p
        lib.sapp_win32_get_hwnd.argtypes = []
    
    # sapp_gl_get_major_version
    if hasattr(lib, 'sapp_gl_get_major_version'):
        lib.sapp_gl_get_major_version.restype = c_int
        lib.sapp_gl_get_major_version.argtypes = []
    
    # sapp_gl_get_minor_version
    if hasattr(lib, 'sapp_gl_get_minor_version'):
        lib.sapp_gl_get_minor_version.restype = c_int
        lib.sapp_gl_get_minor_version.argtypes = []
    
    # sapp_gl_is_gles
    if hasattr(lib, 'sapp_gl_is_gles'):
        lib.sapp_gl_is_gles.restype = c_bool
        lib.sapp_gl_is_gles.argtypes = []
    
    # sapp_x11_get_window
    if hasattr(lib, 'sapp_x11_get_window'):
        lib.sapp_x11_get_window.restype = c_void_p
        lib.sapp_x11_get_window.argtypes = []
    
    # sapp_x11_get_display
    if hasattr(lib, 'sapp_x11_get_display'):
        lib.sapp_x11_get_display.restype = c_void_p
        lib.sapp_x11_get_display.argtypes = []
    
    # sapp_android_get_native_activity
    if hasattr(lib, 'sapp_android_get_native_activity'):
        lib.sapp_android_get_native_activity.restype = c_void_p
        lib.sapp_android_get_native_activity.argtypes = []
    
    # sglue_environment
    if hasattr(lib, 'sglue_environment'):
        lib.sglue_environment.restype = sg_environment
        lib.sglue_environment.argtypes = []
    
    # sglue_swapchain
    if hasattr(lib, 'sglue_swapchain'):
        lib.sglue_swapchain.restype = sg_swapchain
        lib.sglue_swapchain.argtypes = []
    

# =============================================================================
# Helper Functions
# =============================================================================

def get_lib():
    """Get the loaded Sokol library."""
    if _sokol_lib is None:
        raise RuntimeError('Sokol library not loaded. Call load_sokol_dll() first.')
    return _sokol_lib


def make_range(data: bytes) -> sg_range:
    """Create an sg_range from bytes data."""
    r = sg_range()
    r.ptr = ctypes.cast(data, c_void_p)
    r.size = len(data)
    return r


def make_buffer_from_array(arr, ctype=c_float):
    """Create a ctypes array from a Python list."""
    return (ctype * len(arr))(*arr)


# Export all public names
__all__ = [
    'SG_INVALID_ID',
    'SG_NUM_INFLIGHT_FRAMES',
    'SG_MAX_COLOR_ATTACHMENTS',
    'SG_MAX_UNIFORMBLOCK_MEMBERS',
    'SG_MAX_VERTEX_ATTRIBUTES',
    'SG_MAX_MIPMAPS',
    'SG_MAX_VERTEXBUFFER_BINDSLOTS',
    'SG_MAX_UNIFORMBLOCK_BINDSLOTS',
    'SG_MAX_VIEW_BINDSLOTS',
    'SG_MAX_SAMPLER_BINDSLOTS',
    'SG_MAX_TEXTURE_SAMPLER_PAIRS',
    'SG_MAX_PORTABLE_COLOR_ATTACHMENTS',
    'SG_MAX_PORTABLE_TEXTURE_BINDINGS_PER_STAGE',
    'SG_MAX_PORTABLE_STORAGEBUFFER_BINDINGS_PER_STAGE',
    'SG_MAX_PORTABLE_STORAGEIMAGE_BINDINGS_PER_STAGE',
    'SG_BACKEND_GLCORE',
    'SG_BACKEND_GLES3',
    'SG_BACKEND_D3D11',
    'SG_BACKEND_METAL_IOS',
    'SG_BACKEND_METAL_MACOS',
    'SG_BACKEND_METAL_SIMULATOR',
    'SG_BACKEND_WGPU',
    'SG_BACKEND_VULKAN',
    'SG_BACKEND_DUMMY',
    '_SG_PIXELFORMAT_DEFAULT',
    'SG_PIXELFORMAT_NONE',
    'SG_PIXELFORMAT_R8',
    'SG_PIXELFORMAT_R8SN',
    'SG_PIXELFORMAT_R8UI',
    'SG_PIXELFORMAT_R8SI',
    'SG_PIXELFORMAT_R16',
    'SG_PIXELFORMAT_R16SN',
    'SG_PIXELFORMAT_R16UI',
    'SG_PIXELFORMAT_R16SI',
    'SG_PIXELFORMAT_R16F',
    'SG_PIXELFORMAT_RG8',
    'SG_PIXELFORMAT_RG8SN',
    'SG_PIXELFORMAT_RG8UI',
    'SG_PIXELFORMAT_RG8SI',
    'SG_PIXELFORMAT_R32UI',
    'SG_PIXELFORMAT_R32SI',
    'SG_PIXELFORMAT_R32F',
    'SG_PIXELFORMAT_RG16',
    'SG_PIXELFORMAT_RG16SN',
    'SG_PIXELFORMAT_RG16UI',
    'SG_PIXELFORMAT_RG16SI',
    'SG_PIXELFORMAT_RG16F',
    'SG_PIXELFORMAT_RGBA8',
    'SG_PIXELFORMAT_SRGB8A8',
    'SG_PIXELFORMAT_RGBA8SN',
    'SG_PIXELFORMAT_RGBA8UI',
    'SG_PIXELFORMAT_RGBA8SI',
    'SG_PIXELFORMAT_BGRA8',
    'SG_PIXELFORMAT_RGB10A2',
    'SG_PIXELFORMAT_RG11B10F',
    'SG_PIXELFORMAT_RGB9E5',
    'SG_PIXELFORMAT_RG32UI',
    'SG_PIXELFORMAT_RG32SI',
    'SG_PIXELFORMAT_RG32F',
    'SG_PIXELFORMAT_RGBA16',
    'SG_PIXELFORMAT_RGBA16SN',
    'SG_PIXELFORMAT_RGBA16UI',
    'SG_PIXELFORMAT_RGBA16SI',
    'SG_PIXELFORMAT_RGBA16F',
    'SG_PIXELFORMAT_RGBA32UI',
    'SG_PIXELFORMAT_RGBA32SI',
    'SG_PIXELFORMAT_RGBA32F',
    'SG_PIXELFORMAT_DEPTH',
    'SG_PIXELFORMAT_DEPTH_STENCIL',
    'SG_PIXELFORMAT_BC1_RGBA',
    'SG_PIXELFORMAT_BC2_RGBA',
    'SG_PIXELFORMAT_BC3_RGBA',
    'SG_PIXELFORMAT_BC3_SRGBA',
    'SG_PIXELFORMAT_BC4_R',
    'SG_PIXELFORMAT_BC4_RSN',
    'SG_PIXELFORMAT_BC5_RG',
    'SG_PIXELFORMAT_BC5_RGSN',
    'SG_PIXELFORMAT_BC6H_RGBF',
    'SG_PIXELFORMAT_BC6H_RGBUF',
    'SG_PIXELFORMAT_BC7_RGBA',
    'SG_PIXELFORMAT_BC7_SRGBA',
    'SG_PIXELFORMAT_ETC2_RGB8',
    'SG_PIXELFORMAT_ETC2_SRGB8',
    'SG_PIXELFORMAT_ETC2_RGB8A1',
    'SG_PIXELFORMAT_ETC2_RGBA8',
    'SG_PIXELFORMAT_ETC2_SRGB8A8',
    'SG_PIXELFORMAT_EAC_R11',
    'SG_PIXELFORMAT_EAC_R11SN',
    'SG_PIXELFORMAT_EAC_RG11',
    'SG_PIXELFORMAT_EAC_RG11SN',
    'SG_PIXELFORMAT_ASTC_4x4_RGBA',
    'SG_PIXELFORMAT_ASTC_4x4_SRGBA',
    '_SG_PIXELFORMAT_NUM',
    '_SG_PIXELFORMAT_FORCE_U32',
    'SG_RESOURCESTATE_INITIAL',
    'SG_RESOURCESTATE_ALLOC',
    'SG_RESOURCESTATE_VALID',
    'SG_RESOURCESTATE_FAILED',
    'SG_RESOURCESTATE_INVALID',
    '_SG_RESOURCESTATE_FORCE_U32',
    '_SG_INDEXTYPE_DEFAULT',
    'SG_INDEXTYPE_NONE',
    'SG_INDEXTYPE_UINT16',
    'SG_INDEXTYPE_UINT32',
    '_SG_INDEXTYPE_NUM',
    '_SG_INDEXTYPE_FORCE_U32',
    '_SG_IMAGETYPE_DEFAULT',
    'SG_IMAGETYPE_2D',
    'SG_IMAGETYPE_CUBE',
    'SG_IMAGETYPE_3D',
    'SG_IMAGETYPE_ARRAY',
    '_SG_IMAGETYPE_NUM',
    '_SG_IMAGETYPE_FORCE_U32',
    '_SG_IMAGESAMPLETYPE_DEFAULT',
    'SG_IMAGESAMPLETYPE_FLOAT',
    'SG_IMAGESAMPLETYPE_DEPTH',
    'SG_IMAGESAMPLETYPE_SINT',
    'SG_IMAGESAMPLETYPE_UINT',
    'SG_IMAGESAMPLETYPE_UNFILTERABLE_FLOAT',
    '_SG_IMAGESAMPLETYPE_NUM',
    '_SG_IMAGESAMPLETYPE_FORCE_U32',
    '_SG_SAMPLERTYPE_DEFAULT',
    'SG_SAMPLERTYPE_FILTERING',
    'SG_SAMPLERTYPE_NONFILTERING',
    'SG_SAMPLERTYPE_COMPARISON',
    '_SG_SAMPLERTYPE_NUM',
    '_SG_SAMPLERTYPE_FORCE_U32',
    '_SG_PRIMITIVETYPE_DEFAULT',
    'SG_PRIMITIVETYPE_POINTS',
    'SG_PRIMITIVETYPE_LINES',
    'SG_PRIMITIVETYPE_LINE_STRIP',
    'SG_PRIMITIVETYPE_TRIANGLES',
    'SG_PRIMITIVETYPE_TRIANGLE_STRIP',
    '_SG_PRIMITIVETYPE_NUM',
    '_SG_PRIMITIVETYPE_FORCE_U32',
    '_SG_FILTER_DEFAULT',
    'SG_FILTER_NEAREST',
    'SG_FILTER_LINEAR',
    '_SG_FILTER_NUM',
    '_SG_FILTER_FORCE_U32',
    '_SG_WRAP_DEFAULT',
    'SG_WRAP_REPEAT',
    'SG_WRAP_CLAMP_TO_EDGE',
    'SG_WRAP_CLAMP_TO_BORDER',
    'SG_WRAP_MIRRORED_REPEAT',
    '_SG_WRAP_NUM',
    '_SG_WRAP_FORCE_U32',
    '_SG_BORDERCOLOR_DEFAULT',
    'SG_BORDERCOLOR_TRANSPARENT_BLACK',
    'SG_BORDERCOLOR_OPAQUE_BLACK',
    'SG_BORDERCOLOR_OPAQUE_WHITE',
    '_SG_BORDERCOLOR_NUM',
    '_SG_BORDERCOLOR_FORCE_U32',
    'SG_VERTEXFORMAT_INVALID',
    'SG_VERTEXFORMAT_FLOAT',
    'SG_VERTEXFORMAT_FLOAT2',
    'SG_VERTEXFORMAT_FLOAT3',
    'SG_VERTEXFORMAT_FLOAT4',
    'SG_VERTEXFORMAT_INT',
    'SG_VERTEXFORMAT_INT2',
    'SG_VERTEXFORMAT_INT3',
    'SG_VERTEXFORMAT_INT4',
    'SG_VERTEXFORMAT_UINT',
    'SG_VERTEXFORMAT_UINT2',
    'SG_VERTEXFORMAT_UINT3',
    'SG_VERTEXFORMAT_UINT4',
    'SG_VERTEXFORMAT_BYTE4',
    'SG_VERTEXFORMAT_BYTE4N',
    'SG_VERTEXFORMAT_UBYTE4',
    'SG_VERTEXFORMAT_UBYTE4N',
    'SG_VERTEXFORMAT_SHORT2',
    'SG_VERTEXFORMAT_SHORT2N',
    'SG_VERTEXFORMAT_USHORT2',
    'SG_VERTEXFORMAT_USHORT2N',
    'SG_VERTEXFORMAT_SHORT4',
    'SG_VERTEXFORMAT_SHORT4N',
    'SG_VERTEXFORMAT_USHORT4',
    'SG_VERTEXFORMAT_USHORT4N',
    'SG_VERTEXFORMAT_UINT10_N2',
    'SG_VERTEXFORMAT_HALF2',
    'SG_VERTEXFORMAT_HALF4',
    '_SG_VERTEXFORMAT_NUM',
    '_SG_VERTEXFORMAT_FORCE_U32',
    '_SG_VERTEXSTEP_DEFAULT',
    'SG_VERTEXSTEP_PER_VERTEX',
    'SG_VERTEXSTEP_PER_INSTANCE',
    '_SG_VERTEXSTEP_NUM',
    '_SG_VERTEXSTEP_FORCE_U32',
    'SG_UNIFORMTYPE_INVALID',
    'SG_UNIFORMTYPE_FLOAT',
    'SG_UNIFORMTYPE_FLOAT2',
    'SG_UNIFORMTYPE_FLOAT3',
    'SG_UNIFORMTYPE_FLOAT4',
    'SG_UNIFORMTYPE_INT',
    'SG_UNIFORMTYPE_INT2',
    'SG_UNIFORMTYPE_INT3',
    'SG_UNIFORMTYPE_INT4',
    'SG_UNIFORMTYPE_MAT4',
    '_SG_UNIFORMTYPE_NUM',
    '_SG_UNIFORMTYPE_FORCE_U32',
    '_SG_UNIFORMLAYOUT_DEFAULT',
    'SG_UNIFORMLAYOUT_NATIVE',
    'SG_UNIFORMLAYOUT_STD140',
    '_SG_UNIFORMLAYOUT_NUM',
    '_SG_UNIFORMLAYOUT_FORCE_U32',
    '_SG_CULLMODE_DEFAULT',
    'SG_CULLMODE_NONE',
    'SG_CULLMODE_FRONT',
    'SG_CULLMODE_BACK',
    '_SG_CULLMODE_NUM',
    '_SG_CULLMODE_FORCE_U32',
    '_SG_FACEWINDING_DEFAULT',
    'SG_FACEWINDING_CCW',
    'SG_FACEWINDING_CW',
    '_SG_FACEWINDING_NUM',
    '_SG_FACEWINDING_FORCE_U32',
    '_SG_COMPAREFUNC_DEFAULT',
    'SG_COMPAREFUNC_NEVER',
    'SG_COMPAREFUNC_LESS',
    'SG_COMPAREFUNC_EQUAL',
    'SG_COMPAREFUNC_LESS_EQUAL',
    'SG_COMPAREFUNC_GREATER',
    'SG_COMPAREFUNC_NOT_EQUAL',
    'SG_COMPAREFUNC_GREATER_EQUAL',
    'SG_COMPAREFUNC_ALWAYS',
    '_SG_COMPAREFUNC_NUM',
    '_SG_COMPAREFUNC_FORCE_U32',
    '_SG_STENCILOP_DEFAULT',
    'SG_STENCILOP_KEEP',
    'SG_STENCILOP_ZERO',
    'SG_STENCILOP_REPLACE',
    'SG_STENCILOP_INCR_CLAMP',
    'SG_STENCILOP_DECR_CLAMP',
    'SG_STENCILOP_INVERT',
    'SG_STENCILOP_INCR_WRAP',
    'SG_STENCILOP_DECR_WRAP',
    '_SG_STENCILOP_NUM',
    '_SG_STENCILOP_FORCE_U32',
    '_SG_BLENDFACTOR_DEFAULT',
    'SG_BLENDFACTOR_ZERO',
    'SG_BLENDFACTOR_ONE',
    'SG_BLENDFACTOR_SRC_COLOR',
    'SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR',
    'SG_BLENDFACTOR_SRC_ALPHA',
    'SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA',
    'SG_BLENDFACTOR_DST_COLOR',
    'SG_BLENDFACTOR_ONE_MINUS_DST_COLOR',
    'SG_BLENDFACTOR_DST_ALPHA',
    'SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA',
    'SG_BLENDFACTOR_SRC_ALPHA_SATURATED',
    'SG_BLENDFACTOR_BLEND_COLOR',
    'SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR',
    'SG_BLENDFACTOR_BLEND_ALPHA',
    'SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA',
    'SG_BLENDFACTOR_SRC1_COLOR',
    'SG_BLENDFACTOR_ONE_MINUS_SRC1_COLOR',
    'SG_BLENDFACTOR_SRC1_ALPHA',
    'SG_BLENDFACTOR_ONE_MINUS_SRC1_ALPHA',
    '_SG_BLENDFACTOR_NUM',
    '_SG_BLENDFACTOR_FORCE_U32',
    '_SG_BLENDOP_DEFAULT',
    'SG_BLENDOP_ADD',
    'SG_BLENDOP_SUBTRACT',
    'SG_BLENDOP_REVERSE_SUBTRACT',
    'SG_BLENDOP_MIN',
    'SG_BLENDOP_MAX',
    '_SG_BLENDOP_NUM',
    '_SG_BLENDOP_FORCE_U32',
    '_SG_COLORMASK_DEFAULT',
    'SG_COLORMASK_NONE',
    'SG_COLORMASK_R',
    'SG_COLORMASK_G',
    'SG_COLORMASK_RG',
    'SG_COLORMASK_B',
    'SG_COLORMASK_RB',
    'SG_COLORMASK_GB',
    'SG_COLORMASK_RGB',
    'SG_COLORMASK_A',
    'SG_COLORMASK_RA',
    'SG_COLORMASK_GA',
    'SG_COLORMASK_RGA',
    'SG_COLORMASK_BA',
    'SG_COLORMASK_RBA',
    'SG_COLORMASK_GBA',
    'SG_COLORMASK_RGBA',
    '_SG_COLORMASK_FORCE_U32',
    '_SG_LOADACTION_DEFAULT',
    'SG_LOADACTION_CLEAR',
    'SG_LOADACTION_LOAD',
    'SG_LOADACTION_DONTCARE',
    '_SG_LOADACTION_FORCE_U32',
    '_SG_STOREACTION_DEFAULT',
    'SG_STOREACTION_STORE',
    'SG_STOREACTION_DONTCARE',
    '_SG_STOREACTION_FORCE_U32',
    'SG_VIEWTYPE_INVALID',
    'SG_VIEWTYPE_STORAGEBUFFER',
    'SG_VIEWTYPE_STORAGEIMAGE',
    'SG_VIEWTYPE_TEXTURE',
    'SG_VIEWTYPE_COLORATTACHMENT',
    'SG_VIEWTYPE_RESOLVEATTACHMENT',
    'SG_VIEWTYPE_DEPTHSTENCILATTACHMENT',
    '_SG_VIEWTYPE_FORCE_U32',
    'SG_SHADERSTAGE_NONE',
    'SG_SHADERSTAGE_VERTEX',
    'SG_SHADERSTAGE_FRAGMENT',
    'SG_SHADERSTAGE_COMPUTE',
    '_SG_SHADERSTAGE_FORCE_U32',
    'SG_SHADERATTRBASETYPE_UNDEFINED',
    'SG_SHADERATTRBASETYPE_FLOAT',
    'SG_SHADERATTRBASETYPE_SINT',
    'SG_SHADERATTRBASETYPE_UINT',
    '_SG_SHADERATTRBASETYPE_FORCE_U32',
    'SG_LOGITEM_OK',
    'SG_LOGITEM_MALLOC_FAILED',
    'SG_LOGITEM_GL_TEXTURE_FORMAT_NOT_SUPPORTED',
    'SG_LOGITEM_GL_3D_TEXTURES_NOT_SUPPORTED',
    'SG_LOGITEM_GL_ARRAY_TEXTURES_NOT_SUPPORTED',
    'SG_LOGITEM_GL_STORAGEBUFFER_GLSL_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_GL_STORAGEIMAGE_GLSL_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_GL_SHADER_COMPILATION_FAILED',
    'SG_LOGITEM_GL_SHADER_LINKING_FAILED',
    'SG_LOGITEM_GL_VERTEX_ATTRIBUTE_NOT_FOUND_IN_SHADER',
    'SG_LOGITEM_GL_UNIFORMBLOCK_NAME_NOT_FOUND_IN_SHADER',
    'SG_LOGITEM_GL_IMAGE_SAMPLER_NAME_NOT_FOUND_IN_SHADER',
    'SG_LOGITEM_GL_FRAMEBUFFER_STATUS_UNDEFINED',
    'SG_LOGITEM_GL_FRAMEBUFFER_STATUS_INCOMPLETE_ATTACHMENT',
    'SG_LOGITEM_GL_FRAMEBUFFER_STATUS_INCOMPLETE_MISSING_ATTACHMENT',
    'SG_LOGITEM_GL_FRAMEBUFFER_STATUS_UNSUPPORTED',
    'SG_LOGITEM_GL_FRAMEBUFFER_STATUS_INCOMPLETE_MULTISAMPLE',
    'SG_LOGITEM_GL_FRAMEBUFFER_STATUS_UNKNOWN',
    'SG_LOGITEM_D3D11_FEATURE_LEVEL_0_DETECTED',
    'SG_LOGITEM_D3D11_CREATE_BUFFER_FAILED',
    'SG_LOGITEM_D3D11_CREATE_BUFFER_SRV_FAILED',
    'SG_LOGITEM_D3D11_CREATE_BUFFER_UAV_FAILED',
    'SG_LOGITEM_D3D11_CREATE_DEPTH_TEXTURE_UNSUPPORTED_PIXEL_FORMAT',
    'SG_LOGITEM_D3D11_CREATE_DEPTH_TEXTURE_FAILED',
    'SG_LOGITEM_D3D11_CREATE_2D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT',
    'SG_LOGITEM_D3D11_CREATE_2D_TEXTURE_FAILED',
    'SG_LOGITEM_D3D11_CREATE_2D_SRV_FAILED',
    'SG_LOGITEM_D3D11_CREATE_3D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT',
    'SG_LOGITEM_D3D11_CREATE_3D_TEXTURE_FAILED',
    'SG_LOGITEM_D3D11_CREATE_3D_SRV_FAILED',
    'SG_LOGITEM_D3D11_CREATE_MSAA_TEXTURE_FAILED',
    'SG_LOGITEM_D3D11_CREATE_SAMPLER_STATE_FAILED',
    'SG_LOGITEM_D3D11_UNIFORMBLOCK_HLSL_REGISTER_B_OUT_OF_RANGE',
    'SG_LOGITEM_D3D11_STORAGEBUFFER_HLSL_REGISTER_T_OUT_OF_RANGE',
    'SG_LOGITEM_D3D11_STORAGEBUFFER_HLSL_REGISTER_U_OUT_OF_RANGE',
    'SG_LOGITEM_D3D11_IMAGE_HLSL_REGISTER_T_OUT_OF_RANGE',
    'SG_LOGITEM_D3D11_STORAGEIMAGE_HLSL_REGISTER_U_OUT_OF_RANGE',
    'SG_LOGITEM_D3D11_SAMPLER_HLSL_REGISTER_S_OUT_OF_RANGE',
    'SG_LOGITEM_D3D11_LOAD_D3DCOMPILER_47_DLL_FAILED',
    'SG_LOGITEM_D3D11_SHADER_COMPILATION_FAILED',
    'SG_LOGITEM_D3D11_SHADER_COMPILATION_OUTPUT',
    'SG_LOGITEM_D3D11_CREATE_CONSTANT_BUFFER_FAILED',
    'SG_LOGITEM_D3D11_CREATE_INPUT_LAYOUT_FAILED',
    'SG_LOGITEM_D3D11_CREATE_RASTERIZER_STATE_FAILED',
    'SG_LOGITEM_D3D11_CREATE_DEPTH_STENCIL_STATE_FAILED',
    'SG_LOGITEM_D3D11_CREATE_BLEND_STATE_FAILED',
    'SG_LOGITEM_D3D11_CREATE_RTV_FAILED',
    'SG_LOGITEM_D3D11_CREATE_DSV_FAILED',
    'SG_LOGITEM_D3D11_CREATE_UAV_FAILED',
    'SG_LOGITEM_D3D11_MAP_FOR_UPDATE_BUFFER_FAILED',
    'SG_LOGITEM_D3D11_MAP_FOR_APPEND_BUFFER_FAILED',
    'SG_LOGITEM_D3D11_MAP_FOR_UPDATE_IMAGE_FAILED',
    'SG_LOGITEM_METAL_CREATE_BUFFER_FAILED',
    'SG_LOGITEM_METAL_TEXTURE_FORMAT_NOT_SUPPORTED',
    'SG_LOGITEM_METAL_CREATE_TEXTURE_FAILED',
    'SG_LOGITEM_METAL_CREATE_SAMPLER_FAILED',
    'SG_LOGITEM_METAL_SHADER_COMPILATION_FAILED',
    'SG_LOGITEM_METAL_SHADER_CREATION_FAILED',
    'SG_LOGITEM_METAL_SHADER_COMPILATION_OUTPUT',
    'SG_LOGITEM_METAL_SHADER_ENTRY_NOT_FOUND',
    'SG_LOGITEM_METAL_UNIFORMBLOCK_MSL_BUFFER_SLOT_OUT_OF_RANGE',
    'SG_LOGITEM_METAL_STORAGEBUFFER_MSL_BUFFER_SLOT_OUT_OF_RANGE',
    'SG_LOGITEM_METAL_STORAGEIMAGE_MSL_TEXTURE_SLOT_OUT_OF_RANGE',
    'SG_LOGITEM_METAL_IMAGE_MSL_TEXTURE_SLOT_OUT_OF_RANGE',
    'SG_LOGITEM_METAL_SAMPLER_MSL_SAMPLER_SLOT_OUT_OF_RANGE',
    'SG_LOGITEM_METAL_CREATE_CPS_FAILED',
    'SG_LOGITEM_METAL_CREATE_CPS_OUTPUT',
    'SG_LOGITEM_METAL_CREATE_RPS_FAILED',
    'SG_LOGITEM_METAL_CREATE_RPS_OUTPUT',
    'SG_LOGITEM_METAL_CREATE_DSS_FAILED',
    'SG_LOGITEM_WGPU_BINDGROUPS_POOL_EXHAUSTED',
    'SG_LOGITEM_WGPU_BINDGROUPSCACHE_SIZE_GREATER_ONE',
    'SG_LOGITEM_WGPU_BINDGROUPSCACHE_SIZE_POW2',
    'SG_LOGITEM_WGPU_CREATEBINDGROUP_FAILED',
    'SG_LOGITEM_WGPU_CREATE_BUFFER_FAILED',
    'SG_LOGITEM_WGPU_CREATE_TEXTURE_FAILED',
    'SG_LOGITEM_WGPU_CREATE_TEXTURE_VIEW_FAILED',
    'SG_LOGITEM_WGPU_CREATE_SAMPLER_FAILED',
    'SG_LOGITEM_WGPU_CREATE_SHADER_MODULE_FAILED',
    'SG_LOGITEM_WGPU_SHADER_CREATE_BINDGROUP_LAYOUT_FAILED',
    'SG_LOGITEM_WGPU_UNIFORMBLOCK_WGSL_GROUP0_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_WGPU_TEXTURE_WGSL_GROUP1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_WGPU_STORAGEBUFFER_WGSL_GROUP1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_WGPU_STORAGEIMAGE_WGSL_GROUP1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_WGPU_SAMPLER_WGSL_GROUP1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_WGPU_CREATE_PIPELINE_LAYOUT_FAILED',
    'SG_LOGITEM_WGPU_CREATE_RENDER_PIPELINE_FAILED',
    'SG_LOGITEM_WGPU_CREATE_COMPUTE_PIPELINE_FAILED',
    'SG_LOGITEM_VULKAN_REQUIRED_EXTENSION_FUNCTION_MISSING',
    'SG_LOGITEM_VULKAN_ALLOC_DEVICE_MEMORY_NO_SUITABLE_MEMORY_TYPE',
    'SG_LOGITEM_VULKAN_ALLOCATE_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_ALLOC_BUFFER_DEVICE_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_ALLOC_IMAGE_DEVICE_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_DELETE_QUEUE_EXHAUSTED',
    'SG_LOGITEM_VULKAN_STAGING_CREATE_BUFFER_FAILED',
    'SG_LOGITEM_VULKAN_STAGING_ALLOCATE_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_STAGING_BIND_BUFFER_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_STAGING_STREAM_BUFFER_OVERFLOW',
    'SG_LOGITEM_VULKAN_CREATE_SHARED_BUFFER_FAILED',
    'SG_LOGITEM_VULKAN_ALLOCATE_SHARED_BUFFER_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_BIND_SHARED_BUFFER_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_MAP_SHARED_BUFFER_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_CREATE_BUFFER_FAILED',
    'SG_LOGITEM_VULKAN_BIND_BUFFER_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_CREATE_IMAGE_FAILED',
    'SG_LOGITEM_VULKAN_BIND_IMAGE_MEMORY_FAILED',
    'SG_LOGITEM_VULKAN_CREATE_SHADER_MODULE_FAILED',
    'SG_LOGITEM_VULKAN_UNIFORMBLOCK_SPIRV_SET0_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_VULKAN_TEXTURE_SPIRV_SET1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_VULKAN_STORAGEBUFFER_SPIRV_SET1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_VULKAN_STORAGEIMAGE_SPIRV_SET1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_VULKAN_SAMPLER_SPIRV_SET1_BINDING_OUT_OF_RANGE',
    'SG_LOGITEM_VULKAN_CREATE_DESCRIPTOR_SET_LAYOUT_FAILED',
    'SG_LOGITEM_VULKAN_SHADER_UNIFORM_DESCRIPTOR_SET_SIZE_VS_CACHE_SIZE',
    'SG_LOGITEM_VULKAN_CREATE_PIPELINE_LAYOUT_FAILED',
    'SG_LOGITEM_VULKAN_CREATE_GRAPHICS_PIPELINE_FAILED',
    'SG_LOGITEM_VULKAN_CREATE_COMPUTE_PIPELINE_FAILED',
    'SG_LOGITEM_VULKAN_CREATE_IMAGE_VIEW_FAILED',
    'SG_LOGITEM_VULKAN_VIEW_MAX_DESCRIPTOR_SIZE',
    'SG_LOGITEM_VULKAN_CREATE_SAMPLER_FAILED',
    'SG_LOGITEM_VULKAN_SAMPLER_MAX_DESCRIPTOR_SIZE',
    'SG_LOGITEM_VULKAN_WAIT_FOR_FENCE_FAILED',
    'SG_LOGITEM_VULKAN_UNIFORM_BUFFER_OVERFLOW',
    'SG_LOGITEM_VULKAN_DESCRIPTOR_BUFFER_OVERFLOW',
    'SG_LOGITEM_IDENTICAL_COMMIT_LISTENER',
    'SG_LOGITEM_COMMIT_LISTENER_ARRAY_FULL',
    'SG_LOGITEM_TRACE_HOOKS_NOT_ENABLED',
    'SG_LOGITEM_DEALLOC_BUFFER_INVALID_STATE',
    'SG_LOGITEM_DEALLOC_IMAGE_INVALID_STATE',
    'SG_LOGITEM_DEALLOC_SAMPLER_INVALID_STATE',
    'SG_LOGITEM_DEALLOC_SHADER_INVALID_STATE',
    'SG_LOGITEM_DEALLOC_PIPELINE_INVALID_STATE',
    'SG_LOGITEM_DEALLOC_VIEW_INVALID_STATE',
    'SG_LOGITEM_INIT_BUFFER_INVALID_STATE',
    'SG_LOGITEM_INIT_IMAGE_INVALID_STATE',
    'SG_LOGITEM_INIT_SAMPLER_INVALID_STATE',
    'SG_LOGITEM_INIT_SHADER_INVALID_STATE',
    'SG_LOGITEM_INIT_PIPELINE_INVALID_STATE',
    'SG_LOGITEM_INIT_VIEW_INVALID_STATE',
    'SG_LOGITEM_UNINIT_BUFFER_INVALID_STATE',
    'SG_LOGITEM_UNINIT_IMAGE_INVALID_STATE',
    'SG_LOGITEM_UNINIT_SAMPLER_INVALID_STATE',
    'SG_LOGITEM_UNINIT_SHADER_INVALID_STATE',
    'SG_LOGITEM_UNINIT_PIPELINE_INVALID_STATE',
    'SG_LOGITEM_UNINIT_VIEW_INVALID_STATE',
    'SG_LOGITEM_FAIL_BUFFER_INVALID_STATE',
    'SG_LOGITEM_FAIL_IMAGE_INVALID_STATE',
    'SG_LOGITEM_FAIL_SAMPLER_INVALID_STATE',
    'SG_LOGITEM_FAIL_SHADER_INVALID_STATE',
    'SG_LOGITEM_FAIL_PIPELINE_INVALID_STATE',
    'SG_LOGITEM_FAIL_VIEW_INVALID_STATE',
    'SG_LOGITEM_BUFFER_POOL_EXHAUSTED',
    'SG_LOGITEM_IMAGE_POOL_EXHAUSTED',
    'SG_LOGITEM_SAMPLER_POOL_EXHAUSTED',
    'SG_LOGITEM_SHADER_POOL_EXHAUSTED',
    'SG_LOGITEM_PIPELINE_POOL_EXHAUSTED',
    'SG_LOGITEM_VIEW_POOL_EXHAUSTED',
    'SG_LOGITEM_BEGINPASS_TOO_MANY_COLOR_ATTACHMENTS',
    'SG_LOGITEM_BEGINPASS_TOO_MANY_RESOLVE_ATTACHMENTS',
    'SG_LOGITEM_BEGINPASS_ATTACHMENTS_ALIVE',
    'SG_LOGITEM_DRAW_WITHOUT_BINDINGS',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_TEXTURES',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_TEXTURES',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_TEXTURES',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_STORAGEBUFFERS',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_STORAGEBUFFERS',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_STORAGEBUFFERS',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_STORAGEIMAGES',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_STORAGEIMAGES',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_STORAGEIMAGES',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_VERTEXSTAGE_TEXTURESAMPLERPAIRS',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_FRAGMENTSTAGE_TEXTURESAMPLERPAIRS',
    'SG_LOGITEM_SHADERDESC_TOO_MANY_COMPUTESTAGE_TEXTURESAMPLERPAIRS',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_CANARY',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_IMMUTABLE_DYNAMIC_STREAM',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_SEPARATE_BUFFER_TYPES',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_NONZERO_SIZE',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_MATCHING_DATA_SIZE',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_ZERO_DATA_SIZE',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_NO_DATA',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_EXPECT_DATA',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_STORAGEBUFFER_SUPPORTED',
    'SG_LOGITEM_VALIDATE_BUFFERDESC_STORAGEBUFFER_SIZE_MULTIPLE_4',
    'SG_LOGITEM_VALIDATE_IMAGEDATA_NODATA',
    'SG_LOGITEM_VALIDATE_IMAGEDATA_DATA_SIZE',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_CANARY',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_IMMUTABLE_DYNAMIC_STREAM',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_2D_NUMSLICES',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_CUBE_NUMSLICES',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_ARRAY_NUMSLICES',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_IMAGETYPE_3D_NUMSLICES',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_NUMSLICES',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_WIDTH',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_HEIGHT',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_NONRT_PIXELFORMAT',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_MSAA_BUT_NO_ATTACHMENT',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_DEPTH_3D_IMAGE',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_IMMUTABLE',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_NO_DATA',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_PIXELFORMAT',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_RESOLVE_EXPECT_NO_MSAA',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_NO_MSAA_SUPPORT',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_NUM_MIPMAPS',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_3D_IMAGE',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_CUBE_IMAGE',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_ARRAY_IMAGE',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_STORAGEIMAGE_PIXELFORMAT',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_STORAGEIMAGE_EXPECT_NO_MSAA',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_INJECTED_NO_DATA',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_DYNAMIC_NO_DATA',
    'SG_LOGITEM_VALIDATE_IMAGEDESC_COMPRESSED_IMMUTABLE',
    'SG_LOGITEM_VALIDATE_SAMPLERDESC_CANARY',
    'SG_LOGITEM_VALIDATE_SAMPLERDESC_ANISTROPIC_REQUIRES_LINEAR_FILTERING',
    'SG_LOGITEM_VALIDATE_SHADERDESC_CANARY',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VERTEX_SOURCE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_FRAGMENT_SOURCE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_COMPUTE_SOURCE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VERTEX_SOURCE_OR_BYTECODE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_FRAGMENT_SOURCE_OR_BYTECODE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_COMPUTE_SOURCE_OR_BYTECODE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_INVALID_SHADER_COMBO',
    'SG_LOGITEM_VALIDATE_SHADERDESC_NO_BYTECODE_SIZE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_METAL_THREADS_PER_THREADGROUP_INITIALIZED',
    'SG_LOGITEM_VALIDATE_SHADERDESC_METAL_THREADS_PER_THREADGROUP_MULTIPLE_32',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_NO_CONT_MEMBERS',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_SIZE_IS_ZERO',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_METAL_BUFFER_SLOT_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_HLSL_REGISTER_B_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_WGSL_GROUP0_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_SPIRV_SET0_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_NO_MEMBERS',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_UNIFORM_GLSL_NAME',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_SIZE_MISMATCH',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_ARRAY_COUNT',
    'SG_LOGITEM_VALIDATE_SHADERDESC_UNIFORMBLOCK_STD140_ARRAY_TYPE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_METAL_BUFFER_SLOT_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_HLSL_REGISTER_T_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_HLSL_REGISTER_U_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_GLSL_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_WGSL_GROUP1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEBUFFER_SPIRV_SET1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_EXPECT_COMPUTE_STAGE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_METAL_TEXTURE_SLOT_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_HLSL_REGISTER_U_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_GLSL_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_WGSL_GROUP1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_STORAGEIMAGE_SPIRV_SET1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_METAL_TEXTURE_SLOT_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_HLSL_REGISTER_T_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_WGSL_GROUP1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_VIEW_TEXTURE_SPIRV_SET1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_METAL_SAMPLER_SLOT_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_HLSL_REGISTER_S_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_WGSL_GROUP1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_SPIRV_SET1_BINDING_COLLISION',
    'SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_VIEW_SLOT_OUT_OF_RANGE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_SAMPLER_SLOT_OUT_OF_RANGE',
    'SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_TEXTURE_STAGE_MISMATCH',
    'SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_EXPECT_TEXTURE_VIEW',
    'SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_SAMPLER_STAGE_MISMATCH',
    'SG_LOGITEM_VALIDATE_SHADERDESC_TEXTURE_SAMPLER_PAIR_GLSL_NAME',
    'SG_LOGITEM_VALIDATE_SHADERDESC_NONFILTERING_SAMPLER_REQUIRED',
    'SG_LOGITEM_VALIDATE_SHADERDESC_COMPARISON_SAMPLER_REQUIRED',
    'SG_LOGITEM_VALIDATE_SHADERDESC_TEXVIEW_NOT_REFERENCED_BY_TEXTURE_SAMPLER_PAIRS',
    'SG_LOGITEM_VALIDATE_SHADERDESC_SAMPLER_NOT_REFERENCED_BY_TEXTURE_SAMPLER_PAIRS',
    'SG_LOGITEM_VALIDATE_SHADERDESC_ATTR_STRING_TOO_LONG',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_CANARY',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_SHADER',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_COMPUTE_SHADER_EXPECTED',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_NO_COMPUTE_SHADER_EXPECTED',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_NO_CONT_ATTRS',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_ATTR_BASETYPE_MISMATCH',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_LAYOUT_STRIDE4',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_ATTR_SEMANTICS',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_SHADER_READONLY_STORAGEBUFFERS',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_BLENDOP_MINMAX_REQUIRES_BLENDFACTOR_ONE',
    'SG_LOGITEM_VALIDATE_PIPELINEDESC_DUAL_SOURCE_BLENDING_NOT_SUPPORTED',
    'SG_LOGITEM_VALIDATE_VIEWDESC_CANARY',
    'SG_LOGITEM_VALIDATE_VIEWDESC_UNIQUE_VIEWTYPE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_ANY_VIEWTYPE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_RESOURCE_ALIVE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_RESOURCE_FAILED',
    'SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEBUFFER_OFFSET_VS_BUFFER_SIZE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEBUFFER_OFFSET_MULTIPLE_256',
    'SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEBUFFER_USAGE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEIMAGE_USAGE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_COLORATTACHMENT_USAGE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_RESOLVEATTACHMENT_USAGE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_DEPTHSTENCILATTACHMENT_USAGE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_MIPLEVEL',
    'SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_2D_SLICE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_CUBEMAP_SLICE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_ARRAY_SLICE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_IMAGE_3D_SLICE',
    'SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_EXPECT_NO_MSAA',
    'SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_MIPLEVELS',
    'SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_2D_SLICES',
    'SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_CUBEMAP_SLICES',
    'SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_ARRAY_SLICES',
    'SG_LOGITEM_VALIDATE_VIEWDESC_TEXTURE_3D_SLICES',
    'SG_LOGITEM_VALIDATE_VIEWDESC_STORAGEIMAGE_PIXELFORMAT',
    'SG_LOGITEM_VALIDATE_VIEWDESC_COLORATTACHMENT_PIXELFORMAT',
    'SG_LOGITEM_VALIDATE_VIEWDESC_DEPTHSTENCILATTACHMENT_PIXELFORMAT',
    'SG_LOGITEM_VALIDATE_VIEWDESC_RESOLVEATTACHMENT_SAMPLECOUNT',
    'SG_LOGITEM_VALIDATE_BEGINPASS_CANARY',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COMPUTEPASS_EXPECT_NO_ATTACHMENTS',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_WIDTH',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_WIDTH_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_HEIGHT',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_HEIGHT_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_SAMPLECOUNT',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_SAMPLECOUNT_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_COLORFORMAT',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_COLORFORMAT_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_DEPTHFORMAT_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_CURRENTDRAWABLE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_CURRENTDRAWABLE_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_DEPTHSTENCILTEXTURE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_DEPTHSTENCILTEXTURE_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_MSAACOLORTEXTURE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_MSAACOLORTEXTURE_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RENDERVIEW',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RENDERVIEW_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RESOLVEVIEW',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RESOLVEVIEW_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_DEPTHSTENCILVIEW',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_DEPTHSTENCILVIEW_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RENDERVIEW',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RENDERVIEW_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RESOLVEVIEW',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RESOLVEVIEW_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_DEPTHSTENCILVIEW',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_DEPTHSTENCILVIEW_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_SWAPCHAIN_GL_EXPECT_FRAMEBUFFER_NOTSET',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEWS_CONTINUOUS',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_ALIVE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_VALID',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_TYPE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_IMAGE_ALIVE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_IMAGE_VALID',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_SIZES',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_SAMPLECOUNT',
    'SG_LOGITEM_VALIDATE_BEGINPASS_COLORATTACHMENTVIEW_SAMPLECOUNTS_EQUAL',
    'SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_NO_COLORATTACHMENTVIEW',
    'SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_ALIVE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_VALID',
    'SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_TYPE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_IMAGE_ALIVE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_IMAGE_VALID',
    'SG_LOGITEM_VALIDATE_BEGINPASS_RESOLVEATTACHMENTVIEW_SIZES',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEWS_CONTINUOUS',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_ALIVE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_VALID',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_TYPE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_IMAGE_ALIVE',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_IMAGE_VALID',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_SIZES',
    'SG_LOGITEM_VALIDATE_BEGINPASS_DEPTHSTENCILATTACHMENTVIEW_SAMPLECOUNT',
    'SG_LOGITEM_VALIDATE_BEGINPASS_ATTACHMENTS_EXPECTED',
    'SG_LOGITEM_VALIDATE_AVP_RENDERPASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_ASR_RENDERPASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_APIP_PIPELINE_VALID_ID',
    'SG_LOGITEM_VALIDATE_APIP_PIPELINE_EXISTS',
    'SG_LOGITEM_VALIDATE_APIP_PIPELINE_VALID',
    'SG_LOGITEM_VALIDATE_APIP_PASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_APIP_PIPELINE_SHADER_ALIVE',
    'SG_LOGITEM_VALIDATE_APIP_PIPELINE_SHADER_VALID',
    'SG_LOGITEM_VALIDATE_APIP_COMPUTEPASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_APIP_RENDERPASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_COLOR_COUNT',
    'SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_COLOR_FORMAT',
    'SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_DEPTH_FORMAT',
    'SG_LOGITEM_VALIDATE_APIP_SWAPCHAIN_SAMPLE_COUNT',
    'SG_LOGITEM_VALIDATE_APIP_ATTACHMENTS_ALIVE',
    'SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_COUNT',
    'SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_VIEW_VALID',
    'SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_IMAGE_VALID',
    'SG_LOGITEM_VALIDATE_APIP_COLORATTACHMENTS_FORMAT',
    'SG_LOGITEM_VALIDATE_APIP_DEPTHSTENCILATTACHMENT_VIEW_VALID',
    'SG_LOGITEM_VALIDATE_APIP_DEPTHSTENCILATTACHMENT_IMAGE_VALID',
    'SG_LOGITEM_VALIDATE_APIP_DEPTHSTENCILATTACHMENT_FORMAT',
    'SG_LOGITEM_VALIDATE_APIP_ATTACHMENT_SAMPLE_COUNT',
    'SG_LOGITEM_VALIDATE_ABND_PASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_ABND_EMPTY_BINDINGS',
    'SG_LOGITEM_VALIDATE_ABND_NO_PIPELINE',
    'SG_LOGITEM_VALIDATE_ABND_PIPELINE_ALIVE',
    'SG_LOGITEM_VALIDATE_ABND_PIPELINE_VALID',
    'SG_LOGITEM_VALIDATE_ABND_PIPELINE_SHADER_ALIVE',
    'SG_LOGITEM_VALIDATE_ABND_PIPELINE_SHADER_VALID',
    'SG_LOGITEM_VALIDATE_ABND_COMPUTE_EXPECTED_NO_VBUFS',
    'SG_LOGITEM_VALIDATE_ABND_COMPUTE_EXPECTED_NO_IBUF',
    'SG_LOGITEM_VALIDATE_ABND_EXPECTED_VBUF',
    'SG_LOGITEM_VALIDATE_ABND_VBUF_ALIVE',
    'SG_LOGITEM_VALIDATE_ABND_VBUF_USAGE',
    'SG_LOGITEM_VALIDATE_ABND_VBUF_OVERFLOW',
    'SG_LOGITEM_VALIDATE_ABND_EXPECTED_NO_IBUF',
    'SG_LOGITEM_VALIDATE_ABND_EXPECTED_IBUF',
    'SG_LOGITEM_VALIDATE_ABND_IBUF_ALIVE',
    'SG_LOGITEM_VALIDATE_ABND_IBUF_USAGE',
    'SG_LOGITEM_VALIDATE_ABND_IBUF_OVERFLOW',
    'SG_LOGITEM_VALIDATE_ABND_EXPECTED_VIEW_BINDING',
    'SG_LOGITEM_VALIDATE_ABND_VIEW_ALIVE',
    'SG_LOGITEM_VALIDATE_ABND_EXPECT_TEXVIEW',
    'SG_LOGITEM_VALIDATE_ABND_EXPECT_SBVIEW',
    'SG_LOGITEM_VALIDATE_ABND_EXPECT_SIMGVIEW',
    'SG_LOGITEM_VALIDATE_ABND_TEXVIEW_IMAGETYPE_MISMATCH',
    'SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_MULTISAMPLED_IMAGE',
    'SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_NON_MULTISAMPLED_IMAGE',
    'SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_FILTERABLE_IMAGE',
    'SG_LOGITEM_VALIDATE_ABND_TEXVIEW_EXPECTED_DEPTH_IMAGE',
    'SG_LOGITEM_VALIDATE_ABND_SBVIEW_READWRITE_IMMUTABLE',
    'SG_LOGITEM_VALIDATE_ABND_SIMGVIEW_COMPUTE_PASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_ABND_SIMGVIEW_IMAGETYPE_MISMATCH',
    'SG_LOGITEM_VALIDATE_ABND_SIMGVIEW_ACCESSFORMAT',
    'SG_LOGITEM_VALIDATE_ABND_EXPECTED_SAMPLER_BINDING',
    'SG_LOGITEM_VALIDATE_ABND_UNEXPECTED_SAMPLER_COMPARE_NEVER',
    'SG_LOGITEM_VALIDATE_ABND_EXPECTED_SAMPLER_COMPARE_NEVER',
    'SG_LOGITEM_VALIDATE_ABND_EXPECTED_NONFILTERING_SAMPLER',
    'SG_LOGITEM_VALIDATE_ABND_SAMPLER_ALIVE',
    'SG_LOGITEM_VALIDATE_ABND_SAMPLER_VALID',
    'SG_LOGITEM_VALIDATE_ABND_TEXTURE_BINDING_VS_DEPTHSTENCIL_ATTACHMENT',
    'SG_LOGITEM_VALIDATE_ABND_TEXTURE_BINDING_VS_COLOR_ATTACHMENT',
    'SG_LOGITEM_VALIDATE_ABND_TEXTURE_BINDING_VS_RESOLVE_ATTACHMENT',
    'SG_LOGITEM_VALIDATE_ABND_TEXTURE_VS_STORAGEIMAGE_BINDING',
    'SG_LOGITEM_VALIDATE_AU_PASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_AU_NO_PIPELINE',
    'SG_LOGITEM_VALIDATE_AU_PIPELINE_ALIVE',
    'SG_LOGITEM_VALIDATE_AU_PIPELINE_VALID',
    'SG_LOGITEM_VALIDATE_AU_PIPELINE_SHADER_ALIVE',
    'SG_LOGITEM_VALIDATE_AU_PIPELINE_SHADER_VALID',
    'SG_LOGITEM_VALIDATE_AU_NO_UNIFORMBLOCK_AT_SLOT',
    'SG_LOGITEM_VALIDATE_AU_SIZE',
    'SG_LOGITEM_VALIDATE_DRAW_RENDERPASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_DRAW_BASEELEMENT_GE_ZERO',
    'SG_LOGITEM_VALIDATE_DRAW_NUMELEMENTS_GE_ZERO',
    'SG_LOGITEM_VALIDATE_DRAW_NUMINSTANCES_GE_ZERO',
    'SG_LOGITEM_VALIDATE_DRAW_EX_RENDERPASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_DRAW_EX_BASEELEMENT_GE_ZERO',
    'SG_LOGITEM_VALIDATE_DRAW_EX_NUMELEMENTS_GE_ZERO',
    'SG_LOGITEM_VALIDATE_DRAW_EX_NUMINSTANCES_GE_ZERO',
    'SG_LOGITEM_VALIDATE_DRAW_EX_BASEINSTANCE_GE_ZERO',
    'SG_LOGITEM_VALIDATE_DRAW_EX_BASEVERTEX_VS_INDEXED',
    'SG_LOGITEM_VALIDATE_DRAW_EX_BASEINSTANCE_VS_INSTANCED',
    'SG_LOGITEM_VALIDATE_DRAW_EX_BASEVERTEX_NOT_SUPPORTED',
    'SG_LOGITEM_VALIDATE_DRAW_EX_BASEINSTANCE_NOT_SUPPORTED',
    'SG_LOGITEM_VALIDATE_DRAW_REQUIRED_BINDINGS_OR_UNIFORMS_MISSING',
    'SG_LOGITEM_VALIDATE_DISPATCH_COMPUTEPASS_EXPECTED',
    'SG_LOGITEM_VALIDATE_DISPATCH_NUMGROUPSX',
    'SG_LOGITEM_VALIDATE_DISPATCH_NUMGROUPSY',
    'SG_LOGITEM_VALIDATE_DISPATCH_NUMGROUPSZ',
    'SG_LOGITEM_VALIDATE_DISPATCH_REQUIRED_BINDINGS_OR_UNIFORMS_MISSING',
    'SG_LOGITEM_VALIDATE_UPDATEBUF_USAGE',
    'SG_LOGITEM_VALIDATE_UPDATEBUF_SIZE',
    'SG_LOGITEM_VALIDATE_UPDATEBUF_ONCE',
    'SG_LOGITEM_VALIDATE_UPDATEBUF_APPEND',
    'SG_LOGITEM_VALIDATE_APPENDBUF_USAGE',
    'SG_LOGITEM_VALIDATE_APPENDBUF_SIZE',
    'SG_LOGITEM_VALIDATE_APPENDBUF_UPDATE',
    'SG_LOGITEM_VALIDATE_UPDIMG_USAGE',
    'SG_LOGITEM_VALIDATE_UPDIMG_ONCE',
    'SG_LOGITEM_VALIDATION_FAILED',
    '_SG_STRING_SIZE',
    '_SG_SLOT_SHIFT',
    '_SG_SLOT_MASK',
    '_SG_MAX_POOL_SIZE',
    '_SG_DEFAULT_BUFFER_POOL_SIZE',
    '_SG_DEFAULT_IMAGE_POOL_SIZE',
    '_SG_DEFAULT_SAMPLER_POOL_SIZE',
    '_SG_DEFAULT_SHADER_POOL_SIZE',
    '_SG_DEFAULT_PIPELINE_POOL_SIZE',
    '_SG_DEFAULT_VIEW_POOL_SIZE',
    '_SG_DEFAULT_UB_SIZE',
    '_SG_DEFAULT_MAX_COMMIT_LISTENERS',
    '_SG_DEFAULT_WGPU_BINDGROUP_CACHE_SIZE',
    '_SG_DEFAULT_VK_COPY_STAGING_SIZE',
    '_SG_DEFAULT_VK_STREAM_STAGING_SIZE',
    '_SG_DEFAULT_VK_DESCRIPTOR_BUFFER_SIZE',
    '_SG_MAX_STORAGEBUFFER_BINDINGS_PER_STAGE',
    '_SG_MAX_STORAGEIMAGE_BINDINGS_PER_STAGE',
    '_SG_MAX_TEXTURE_BINDINGS_PER_STAGE',
    '_SG_MAX_UNIFORMBLOCK_BINDINGS_PER_STAGE',
    'SAPP_MAX_TOUCHPOINTS',
    'SAPP_MAX_MOUSEBUTTONS',
    'SAPP_MAX_KEYCODES',
    'SAPP_MAX_ICONIMAGES',
    'SAPP_EVENTTYPE_INVALID',
    'SAPP_EVENTTYPE_KEY_DOWN',
    'SAPP_EVENTTYPE_KEY_UP',
    'SAPP_EVENTTYPE_CHAR',
    'SAPP_EVENTTYPE_MOUSE_DOWN',
    'SAPP_EVENTTYPE_MOUSE_UP',
    'SAPP_EVENTTYPE_MOUSE_SCROLL',
    'SAPP_EVENTTYPE_MOUSE_MOVE',
    'SAPP_EVENTTYPE_MOUSE_ENTER',
    'SAPP_EVENTTYPE_MOUSE_LEAVE',
    'SAPP_EVENTTYPE_TOUCHES_BEGAN',
    'SAPP_EVENTTYPE_TOUCHES_MOVED',
    'SAPP_EVENTTYPE_TOUCHES_ENDED',
    'SAPP_EVENTTYPE_TOUCHES_CANCELLED',
    'SAPP_EVENTTYPE_RESIZED',
    'SAPP_EVENTTYPE_ICONIFIED',
    'SAPP_EVENTTYPE_RESTORED',
    'SAPP_EVENTTYPE_FOCUSED',
    'SAPP_EVENTTYPE_UNFOCUSED',
    'SAPP_EVENTTYPE_SUSPENDED',
    'SAPP_EVENTTYPE_RESUMED',
    'SAPP_EVENTTYPE_QUIT_REQUESTED',
    'SAPP_EVENTTYPE_CLIPBOARD_PASTED',
    'SAPP_EVENTTYPE_FILES_DROPPED',
    '_SAPP_EVENTTYPE_NUM',
    '_SAPP_EVENTTYPE_FORCE_U32',
    'SAPP_KEYCODE_INVALID',
    'SAPP_KEYCODE_SPACE',
    'SAPP_KEYCODE_APOSTROPHE',
    'SAPP_KEYCODE_COMMA',
    'SAPP_KEYCODE_MINUS',
    'SAPP_KEYCODE_PERIOD',
    'SAPP_KEYCODE_SLASH',
    'SAPP_KEYCODE_0',
    'SAPP_KEYCODE_1',
    'SAPP_KEYCODE_2',
    'SAPP_KEYCODE_3',
    'SAPP_KEYCODE_4',
    'SAPP_KEYCODE_5',
    'SAPP_KEYCODE_6',
    'SAPP_KEYCODE_7',
    'SAPP_KEYCODE_8',
    'SAPP_KEYCODE_9',
    'SAPP_KEYCODE_SEMICOLON',
    'SAPP_KEYCODE_EQUAL',
    'SAPP_KEYCODE_A',
    'SAPP_KEYCODE_B',
    'SAPP_KEYCODE_C',
    'SAPP_KEYCODE_D',
    'SAPP_KEYCODE_E',
    'SAPP_KEYCODE_F',
    'SAPP_KEYCODE_G',
    'SAPP_KEYCODE_H',
    'SAPP_KEYCODE_I',
    'SAPP_KEYCODE_J',
    'SAPP_KEYCODE_K',
    'SAPP_KEYCODE_L',
    'SAPP_KEYCODE_M',
    'SAPP_KEYCODE_N',
    'SAPP_KEYCODE_O',
    'SAPP_KEYCODE_P',
    'SAPP_KEYCODE_Q',
    'SAPP_KEYCODE_R',
    'SAPP_KEYCODE_S',
    'SAPP_KEYCODE_T',
    'SAPP_KEYCODE_U',
    'SAPP_KEYCODE_V',
    'SAPP_KEYCODE_W',
    'SAPP_KEYCODE_X',
    'SAPP_KEYCODE_Y',
    'SAPP_KEYCODE_Z',
    'SAPP_KEYCODE_LEFT_BRACKET',
    'SAPP_KEYCODE_BACKSLASH',
    'SAPP_KEYCODE_RIGHT_BRACKET',
    'SAPP_KEYCODE_GRAVE_ACCENT',
    'SAPP_KEYCODE_WORLD_1',
    'SAPP_KEYCODE_WORLD_2',
    'SAPP_KEYCODE_ESCAPE',
    'SAPP_KEYCODE_ENTER',
    'SAPP_KEYCODE_TAB',
    'SAPP_KEYCODE_BACKSPACE',
    'SAPP_KEYCODE_INSERT',
    'SAPP_KEYCODE_DELETE',
    'SAPP_KEYCODE_RIGHT',
    'SAPP_KEYCODE_LEFT',
    'SAPP_KEYCODE_DOWN',
    'SAPP_KEYCODE_UP',
    'SAPP_KEYCODE_PAGE_UP',
    'SAPP_KEYCODE_PAGE_DOWN',
    'SAPP_KEYCODE_HOME',
    'SAPP_KEYCODE_END',
    'SAPP_KEYCODE_CAPS_LOCK',
    'SAPP_KEYCODE_SCROLL_LOCK',
    'SAPP_KEYCODE_NUM_LOCK',
    'SAPP_KEYCODE_PRINT_SCREEN',
    'SAPP_KEYCODE_PAUSE',
    'SAPP_KEYCODE_F1',
    'SAPP_KEYCODE_F2',
    'SAPP_KEYCODE_F3',
    'SAPP_KEYCODE_F4',
    'SAPP_KEYCODE_F5',
    'SAPP_KEYCODE_F6',
    'SAPP_KEYCODE_F7',
    'SAPP_KEYCODE_F8',
    'SAPP_KEYCODE_F9',
    'SAPP_KEYCODE_F10',
    'SAPP_KEYCODE_F11',
    'SAPP_KEYCODE_F12',
    'SAPP_KEYCODE_F13',
    'SAPP_KEYCODE_F14',
    'SAPP_KEYCODE_F15',
    'SAPP_KEYCODE_F16',
    'SAPP_KEYCODE_F17',
    'SAPP_KEYCODE_F18',
    'SAPP_KEYCODE_F19',
    'SAPP_KEYCODE_F20',
    'SAPP_KEYCODE_F21',
    'SAPP_KEYCODE_F22',
    'SAPP_KEYCODE_F23',
    'SAPP_KEYCODE_F24',
    'SAPP_KEYCODE_F25',
    'SAPP_KEYCODE_KP_0',
    'SAPP_KEYCODE_KP_1',
    'SAPP_KEYCODE_KP_2',
    'SAPP_KEYCODE_KP_3',
    'SAPP_KEYCODE_KP_4',
    'SAPP_KEYCODE_KP_5',
    'SAPP_KEYCODE_KP_6',
    'SAPP_KEYCODE_KP_7',
    'SAPP_KEYCODE_KP_8',
    'SAPP_KEYCODE_KP_9',
    'SAPP_KEYCODE_KP_DECIMAL',
    'SAPP_KEYCODE_KP_DIVIDE',
    'SAPP_KEYCODE_KP_MULTIPLY',
    'SAPP_KEYCODE_KP_SUBTRACT',
    'SAPP_KEYCODE_KP_ADD',
    'SAPP_KEYCODE_KP_ENTER',
    'SAPP_KEYCODE_KP_EQUAL',
    'SAPP_KEYCODE_LEFT_SHIFT',
    'SAPP_KEYCODE_LEFT_CONTROL',
    'SAPP_KEYCODE_LEFT_ALT',
    'SAPP_KEYCODE_LEFT_SUPER',
    'SAPP_KEYCODE_RIGHT_SHIFT',
    'SAPP_KEYCODE_RIGHT_CONTROL',
    'SAPP_KEYCODE_RIGHT_ALT',
    'SAPP_KEYCODE_RIGHT_SUPER',
    'SAPP_KEYCODE_MENU',
    'SAPP_ANDROIDTOOLTYPE_UNKNOWN',
    'SAPP_ANDROIDTOOLTYPE_FINGER',
    'SAPP_ANDROIDTOOLTYPE_STYLUS',
    'SAPP_ANDROIDTOOLTYPE_MOUSE',
    'SAPP_MOUSEBUTTON_LEFT',
    'SAPP_MOUSEBUTTON_RIGHT',
    'SAPP_MOUSEBUTTON_MIDDLE',
    'SAPP_MOUSEBUTTON_INVALID',
    'SAPP_MODIFIER_SHIFT',
    'SAPP_MODIFIER_CTRL',
    'SAPP_MODIFIER_ALT',
    'SAPP_MODIFIER_SUPER',
    'SAPP_MODIFIER_LMB',
    'SAPP_MODIFIER_RMB',
    'SAPP_MODIFIER_MMB',
    'SAPP_LOGITEM_OK',
    'SAPP_LOGITEM_MALLOC_FAILED',
    'SAPP_LOGITEM_MACOS_INVALID_NSOPENGL_PROFILE',
    'SAPP_LOGITEM_WIN32_LOAD_OPENGL32_DLL_FAILED',
    'SAPP_LOGITEM_WIN32_CREATE_HELPER_WINDOW_FAILED',
    'SAPP_LOGITEM_WIN32_HELPER_WINDOW_GETDC_FAILED',
    'SAPP_LOGITEM_WIN32_DUMMY_CONTEXT_SET_PIXELFORMAT_FAILED',
    'SAPP_LOGITEM_WIN32_CREATE_DUMMY_CONTEXT_FAILED',
    'SAPP_LOGITEM_WIN32_DUMMY_CONTEXT_MAKE_CURRENT_FAILED',
    'SAPP_LOGITEM_WIN32_GET_PIXELFORMAT_ATTRIB_FAILED',
    'SAPP_LOGITEM_WIN32_WGL_FIND_PIXELFORMAT_FAILED',
    'SAPP_LOGITEM_WIN32_WGL_DESCRIBE_PIXELFORMAT_FAILED',
    'SAPP_LOGITEM_WIN32_WGL_SET_PIXELFORMAT_FAILED',
    'SAPP_LOGITEM_WIN32_WGL_ARB_CREATE_CONTEXT_REQUIRED',
    'SAPP_LOGITEM_WIN32_WGL_ARB_CREATE_CONTEXT_PROFILE_REQUIRED',
    'SAPP_LOGITEM_WIN32_WGL_OPENGL_VERSION_NOT_SUPPORTED',
    'SAPP_LOGITEM_WIN32_WGL_OPENGL_PROFILE_NOT_SUPPORTED',
    'SAPP_LOGITEM_WIN32_WGL_INCOMPATIBLE_DEVICE_CONTEXT',
    'SAPP_LOGITEM_WIN32_WGL_CREATE_CONTEXT_ATTRIBS_FAILED_OTHER',
    'SAPP_LOGITEM_WIN32_D3D11_CREATE_DEVICE_AND_SWAPCHAIN_WITH_DEBUG_FAILED',
    'SAPP_LOGITEM_WIN32_D3D11_GET_IDXGIFACTORY_FAILED',
    'SAPP_LOGITEM_WIN32_D3D11_GET_IDXGIADAPTER_FAILED',
    'SAPP_LOGITEM_WIN32_D3D11_QUERY_INTERFACE_IDXGIDEVICE1_FAILED',
    'SAPP_LOGITEM_WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_LOCK',
    'SAPP_LOGITEM_WIN32_REGISTER_RAW_INPUT_DEVICES_FAILED_MOUSE_UNLOCK',
    'SAPP_LOGITEM_WIN32_GET_RAW_INPUT_DATA_FAILED',
    'SAPP_LOGITEM_WIN32_DESTROYICON_FOR_CURSOR_FAILED',
    'SAPP_LOGITEM_LINUX_GLX_LOAD_LIBGL_FAILED',
    'SAPP_LOGITEM_LINUX_GLX_LOAD_ENTRY_POINTS_FAILED',
    'SAPP_LOGITEM_LINUX_GLX_EXTENSION_NOT_FOUND',
    'SAPP_LOGITEM_LINUX_GLX_QUERY_VERSION_FAILED',
    'SAPP_LOGITEM_LINUX_GLX_VERSION_TOO_LOW',
    'SAPP_LOGITEM_LINUX_GLX_NO_GLXFBCONFIGS',
    'SAPP_LOGITEM_LINUX_GLX_NO_SUITABLE_GLXFBCONFIG',
    'SAPP_LOGITEM_LINUX_GLX_GET_VISUAL_FROM_FBCONFIG_FAILED',
    'SAPP_LOGITEM_LINUX_GLX_REQUIRED_EXTENSIONS_MISSING',
    'SAPP_LOGITEM_LINUX_GLX_CREATE_CONTEXT_FAILED',
    'SAPP_LOGITEM_LINUX_GLX_CREATE_WINDOW_FAILED',
    'SAPP_LOGITEM_LINUX_X11_CREATE_WINDOW_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_BIND_OPENGL_API_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_BIND_OPENGL_ES_API_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_GET_DISPLAY_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_INITIALIZE_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_NO_CONFIGS',
    'SAPP_LOGITEM_LINUX_EGL_NO_NATIVE_VISUAL',
    'SAPP_LOGITEM_LINUX_EGL_GET_VISUAL_INFO_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_CREATE_WINDOW_SURFACE_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_CREATE_CONTEXT_FAILED',
    'SAPP_LOGITEM_LINUX_EGL_MAKE_CURRENT_FAILED',
    'SAPP_LOGITEM_LINUX_X11_OPEN_DISPLAY_FAILED',
    'SAPP_LOGITEM_LINUX_X11_QUERY_SYSTEM_DPI_FAILED',
    'SAPP_LOGITEM_LINUX_X11_DROPPED_FILE_URI_WRONG_SCHEME',
    'SAPP_LOGITEM_LINUX_X11_FAILED_TO_BECOME_OWNER_OF_CLIPBOARD',
    'SAPP_LOGITEM_ANDROID_UNSUPPORTED_INPUT_EVENT_INPUT_CB',
    'SAPP_LOGITEM_ANDROID_UNSUPPORTED_INPUT_EVENT_MAIN_CB',
    'SAPP_LOGITEM_ANDROID_READ_MSG_FAILED',
    'SAPP_LOGITEM_ANDROID_WRITE_MSG_FAILED',
    'SAPP_LOGITEM_ANDROID_MSG_CREATE',
    'SAPP_LOGITEM_ANDROID_MSG_RESUME',
    'SAPP_LOGITEM_ANDROID_MSG_PAUSE',
    'SAPP_LOGITEM_ANDROID_MSG_FOCUS',
    'SAPP_LOGITEM_ANDROID_MSG_NO_FOCUS',
    'SAPP_LOGITEM_ANDROID_MSG_SET_NATIVE_WINDOW',
    'SAPP_LOGITEM_ANDROID_MSG_SET_INPUT_QUEUE',
    'SAPP_LOGITEM_ANDROID_MSG_DESTROY',
    'SAPP_LOGITEM_ANDROID_UNKNOWN_MSG',
    'SAPP_LOGITEM_ANDROID_LOOP_THREAD_STARTED',
    'SAPP_LOGITEM_ANDROID_LOOP_THREAD_DONE',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONSTART',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONRESUME',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONSAVEINSTANCESTATE',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONWINDOWFOCUSCHANGED',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONPAUSE',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONSTOP',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWCREATED',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONNATIVEWINDOWDESTROYED',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUECREATED',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONINPUTQUEUEDESTROYED',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONCONFIGURATIONCHANGED',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONLOWMEMORY',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONDESTROY',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_DONE',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_ONCREATE',
    'SAPP_LOGITEM_ANDROID_CREATE_THREAD_PIPE_FAILED',
    'SAPP_LOGITEM_ANDROID_NATIVE_ACTIVITY_CREATE_SUCCESS',
    'SAPP_LOGITEM_WGPU_DEVICE_LOST',
    'SAPP_LOGITEM_WGPU_DEVICE_LOG',
    'SAPP_LOGITEM_WGPU_DEVICE_UNCAPTURED_ERROR',
    'SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_SURFACE_FAILED',
    'SAPP_LOGITEM_WGPU_SWAPCHAIN_SURFACE_GET_CAPABILITIES_FAILED',
    'SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_DEPTH_STENCIL_TEXTURE_FAILED',
    'SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_DEPTH_STENCIL_VIEW_FAILED',
    'SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_MSAA_TEXTURE_FAILED',
    'SAPP_LOGITEM_WGPU_SWAPCHAIN_CREATE_MSAA_VIEW_FAILED',
    'SAPP_LOGITEM_WGPU_SWAPCHAIN_GETCURRENTTEXTURE_FAILED',
    'SAPP_LOGITEM_WGPU_REQUEST_DEVICE_STATUS_ERROR',
    'SAPP_LOGITEM_WGPU_REQUEST_DEVICE_STATUS_UNKNOWN',
    'SAPP_LOGITEM_WGPU_REQUEST_ADAPTER_STATUS_UNAVAILABLE',
    'SAPP_LOGITEM_WGPU_REQUEST_ADAPTER_STATUS_ERROR',
    'SAPP_LOGITEM_WGPU_REQUEST_ADAPTER_STATUS_UNKNOWN',
    'SAPP_LOGITEM_WGPU_CREATE_INSTANCE_FAILED',
    'SAPP_LOGITEM_VULKAN_REQUIRED_INSTANCE_EXTENSION_FUNCTION_MISSING',
    'SAPP_LOGITEM_VULKAN_ALLOC_DEVICE_MEMORY_NO_SUITABLE_MEMORY_TYPE',
    'SAPP_LOGITEM_VULKAN_ALLOCATE_MEMORY_FAILED',
    'SAPP_LOGITEM_VULKAN_CREATE_INSTANCE_FAILED',
    'SAPP_LOGITEM_VULKAN_ENUMERATE_PHYSICAL_DEVICES_FAILED',
    'SAPP_LOGITEM_VULKAN_NO_PHYSICAL_DEVICES_FOUND',
    'SAPP_LOGITEM_VULKAN_NO_SUITABLE_PHYSICAL_DEVICE_FOUND',
    'SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_EXTENSION_NOT_PRESENT',
    'SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_FEATURE_NOT_PRESENT',
    'SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_INITIALIZATION_FAILED',
    'SAPP_LOGITEM_VULKAN_CREATE_DEVICE_FAILED_OTHER',
    'SAPP_LOGITEM_VULKAN_CREATE_SURFACE_FAILED',
    'SAPP_LOGITEM_VULKAN_CREATE_SWAPCHAIN_FAILED',
    'SAPP_LOGITEM_VULKAN_SWAPCHAIN_CREATE_IMAGE_VIEW_FAILED',
    'SAPP_LOGITEM_VULKAN_SWAPCHAIN_CREATE_IMAGE_FAILED',
    'SAPP_LOGITEM_VULKAN_SWAPCHAIN_ALLOC_IMAGE_DEVICE_MEMORY_FAILED',
    'SAPP_LOGITEM_VULKAN_SWAPCHAIN_BIND_IMAGE_MEMORY_FAILED',
    'SAPP_LOGITEM_VULKAN_ACQUIRE_NEXT_IMAGE_FAILED',
    'SAPP_LOGITEM_VULKAN_QUEUE_PRESENT_FAILED',
    'SAPP_LOGITEM_IMAGE_DATA_SIZE_MISMATCH',
    'SAPP_LOGITEM_DROPPED_FILE_PATH_TOO_LONG',
    'SAPP_LOGITEM_CLIPBOARD_STRING_TOO_BIG',
    '_SAPP_PIXELFORMAT_DEFAULT',
    'SAPP_PIXELFORMAT_NONE',
    'SAPP_PIXELFORMAT_RGBA8',
    'SAPP_PIXELFORMAT_SRGB8A8',
    'SAPP_PIXELFORMAT_BGRA8',
    'SAPP_PIXELFORMAT_SBGRA8',
    'SAPP_PIXELFORMAT_DEPTH',
    'SAPP_PIXELFORMAT_DEPTH_STENCIL',
    '_SA_PPPIXELFORMAT_FORCE_U32',
    'SAPP_HTML5_FETCH_ERROR_NO_ERROR',
    'SAPP_HTML5_FETCH_ERROR_BUFFER_TOO_SMALL',
    'SAPP_HTML5_FETCH_ERROR_OTHER',
    'SAPP_MOUSECURSOR_DEFAULT',
    'SAPP_MOUSECURSOR_ARROW',
    'SAPP_MOUSECURSOR_IBEAM',
    'SAPP_MOUSECURSOR_CROSSHAIR',
    'SAPP_MOUSECURSOR_POINTING_HAND',
    'SAPP_MOUSECURSOR_RESIZE_EW',
    'SAPP_MOUSECURSOR_RESIZE_NS',
    'SAPP_MOUSECURSOR_RESIZE_NWSE',
    'SAPP_MOUSECURSOR_RESIZE_NESW',
    'SAPP_MOUSECURSOR_RESIZE_ALL',
    'SAPP_MOUSECURSOR_NOT_ALLOWED',
    'SAPP_MOUSECURSOR_CUSTOM_0',
    'SAPP_MOUSECURSOR_CUSTOM_1',
    'SAPP_MOUSECURSOR_CUSTOM_2',
    'SAPP_MOUSECURSOR_CUSTOM_3',
    'SAPP_MOUSECURSOR_CUSTOM_4',
    'SAPP_MOUSECURSOR_CUSTOM_5',
    'SAPP_MOUSECURSOR_CUSTOM_6',
    'SAPP_MOUSECURSOR_CUSTOM_7',
    'SAPP_MOUSECURSOR_CUSTOM_8',
    'SAPP_MOUSECURSOR_CUSTOM_9',
    'SAPP_MOUSECURSOR_CUSTOM_10',
    'SAPP_MOUSECURSOR_CUSTOM_11',
    'SAPP_MOUSECURSOR_CUSTOM_12',
    'SAPP_MOUSECURSOR_CUSTOM_13',
    'SAPP_MOUSECURSOR_CUSTOM_14',
    'SAPP_MOUSECURSOR_CUSTOM_15',
    '_SAPP_MOUSECURSOR_NUM',
    'PROCESS_DPI_UNAWARE',
    'PROCESS_SYSTEM_DPI_AWARE',
    'PROCESS_PER_MONITOR_DPI_AWARE',
    'MDT_EFFECTIVE_DPI',
    'MDT_ANGULAR_DPI',
    'MDT_RAW_DPI',
    'MDT_DEFAULT',
    'sg_buffer',
    'sg_image',
    'sg_sampler',
    'sg_shader',
    'sg_pipeline',
    'sg_view',
    'sg_range',
    'sg_color',
    'sg_pixelformat_info',
    'sg_features',
    'sg_limits',
    'sg_color_attachment_action',
    'sg_depth_attachment_action',
    'sg_stencil_attachment_action',
    'sg_pass_action',
    'sg_metal_swapchain',
    'sg_d3d11_swapchain',
    'sg_wgpu_swapchain',
    'sg_vulkan_swapchain',
    'sg_gl_swapchain',
    'sg_swapchain',
    'sg_attachments',
    'sg_pass',
    'sg_bindings',
    'sg_buffer_usage',
    'sg_buffer_desc',
    'sg_image_usage',
    'sg_image_data',
    'sg_image_desc',
    'sg_sampler_desc',
    'sg_shader_function',
    'sg_shader_vertex_attr',
    'sg_glsl_shader_uniform',
    'sg_shader_uniform_block',
    'sg_shader_texture_view',
    'sg_shader_storage_buffer_view',
    'sg_shader_storage_image_view',
    'sg_shader_view',
    'sg_shader_sampler',
    'sg_shader_texture_sampler_pair',
    'sg_mtl_shader_threads_per_threadgroup',
    'sg_shader_desc',
    'sg_vertex_buffer_layout_state',
    'sg_vertex_attr_state',
    'sg_vertex_layout_state',
    'sg_stencil_face_state',
    'sg_stencil_state',
    'sg_depth_state',
    'sg_blend_state',
    'sg_color_target_state',
    'sg_pipeline_desc',
    'sg_buffer_view_desc',
    'sg_image_view_desc',
    'sg_texture_view_range',
    'sg_texture_view_desc',
    'sg_view_desc',
    'sg_trace_hooks',
    'sg_slot_info',
    'sg_buffer_info',
    'sg_image_info',
    'sg_sampler_info',
    'sg_shader_info',
    'sg_pipeline_info',
    'sg_view_info',
    'sg_frame_stats_gl',
    'sg_frame_stats_d3d11_pass',
    'sg_frame_stats_d3d11_pipeline',
    'sg_frame_stats_d3d11_bindings',
    'sg_frame_stats_d3d11_uniforms',
    'sg_frame_stats_d3d11_draw',
    'sg_frame_stats_d3d11',
    'sg_frame_stats_metal_idpool',
    'sg_frame_stats_metal_pipeline',
    'sg_frame_stats_metal_bindings',
    'sg_frame_stats_metal_uniforms',
    'sg_frame_stats_metal',
    'sg_frame_stats_wgpu_uniforms',
    'sg_frame_stats_wgpu_bindings',
    'sg_frame_stats_wgpu',
    'sg_frame_stats_vk',
    'sg_frame_resource_stats',
    'sg_total_resource_stats',
    'sg_total_stats',
    'sg_frame_stats',
    'sg_stats',
    'sg_environment_defaults',
    'sg_metal_environment',
    'sg_d3d11_environment',
    'sg_wgpu_environment',
    'sg_vulkan_environment',
    'sg_environment',
    'sg_commit_listener',
    'sg_allocator',
    'sg_logger',
    'sg_d3d11_desc',
    'sg_metal_desc',
    'sg_wgpu_desc',
    'sg_vulkan_desc',
    'sg_desc',
    'sg_d3d11_buffer_info',
    'sg_d3d11_image_info',
    'sg_d3d11_sampler_info',
    'sg_d3d11_shader_info',
    'sg_d3d11_pipeline_info',
    'sg_d3d11_view_info',
    'sg_mtl_buffer_info',
    'sg_mtl_image_info',
    'sg_mtl_sampler_info',
    'sg_mtl_shader_info',
    'sg_mtl_pipeline_info',
    'sg_wgpu_buffer_info',
    'sg_wgpu_image_info',
    'sg_wgpu_sampler_info',
    'sg_wgpu_shader_info',
    'sg_wgpu_pipeline_info',
    'sg_wgpu_view_info',
    'sg_gl_buffer_info',
    'sg_gl_image_info',
    'sg_gl_sampler_info',
    'sg_gl_shader_info',
    'sg_gl_view_info',
    '_sg_recti_t',
    '_sg_dimi_t',
    '_sg_slot_t',
    '_sg_pool_t',
    '_sg_track_t',
    '_sg_sref_s',
    '_sg_buffer_ref_s',
    '_sg_image_ref_s',
    '_sg_sampler_ref_t',
    '_sg_shader_ref_s',
    '_sg_pipeline_ref_s',
    '_sg_view_ref_s',
    '_sg_str_t',
    '_sg_buffer_common_t',
    '_sg_image_common_t',
    '_sg_sampler_common_t',
    '_sg_shader_attr_t',
    '_sg_shader_uniform_block_t',
    '_sg_shader_view_t',
    '_sg_shader_sampler_t',
    '_sg_shader_texture_sampler_t',
    '_sg_shader_common_t',
    '_sg_pipeline_common_t',
    '_sg_buffer_view_common_t',
    '_sg_image_view_common_t',
    '_sg_view_common_t',
    '_sg_buffer_s',
    '_sg_image_s',
    '_sg_sampler_s',
    '_sg_d3d11_shader_attr_t',
    '_sg_shader_s',
    '_sg_pipeline_s',
    '_sg_view_s',
    '_sg_d3d11_backend_t',
    '_sg_pools_s',
    '_sg_commit_listeners_t',
    '_sg_attachments_ptrs_t',
    '_sg_bindings_ptrs_t',
    '_sg_pixelformat_info_t',
    '_sg_state_t',
    '_sg_u128_t',
    'sapp_touchpoint',
    'sapp_event',
    'sapp_range',
    'sapp_image_desc',
    'sapp_icon_desc',
    'sapp_allocator',
    'sapp_environment_defaults',
    'sapp_metal_environment',
    'sapp_d3d11_environment',
    'sapp_wgpu_environment',
    'sapp_vulkan_environment',
    'sapp_environment',
    'sapp_metal_swapchain',
    'sapp_d3d11_swapchain',
    'sapp_wgpu_swapchain',
    'sapp_vulkan_swapchain',
    'sapp_gl_swapchain',
    'sapp_swapchain',
    'sapp_logger',
    'sapp_gl_desc',
    'sapp_win32_desc',
    'sapp_html5_desc',
    'sapp_ios_desc',
    'sapp_desc',
    'sapp_html5_fetch_response',
    'sapp_html5_fetch_request',
    '_sapp_ring_t',
    '_sapp_timestamp_t',
    '_sapp_timing_t',
    '_sapp_d3d11_t',
    '_sapp_win32_dpi_t',
    '_sapp_win32_t',
    '_sapp_clipboard_t',
    '_sapp_drop_t',
    '_sapp_mouse_t',
    '_sapp_t',
    'DPI_AWARENESS_CONTEXT_T__',
    '_FuncPtr_reset_state_cache',
    '_FuncPtr_make_buffer',
    '_FuncPtr_make_image',
    '_FuncPtr_make_sampler',
    '_FuncPtr_make_shader',
    '_FuncPtr_make_pipeline',
    '_FuncPtr_make_view',
    '_FuncPtr_destroy_buffer',
    '_FuncPtr_destroy_image',
    '_FuncPtr_destroy_sampler',
    '_FuncPtr_destroy_shader',
    '_FuncPtr_destroy_pipeline',
    '_FuncPtr_destroy_view',
    '_FuncPtr_update_buffer',
    '_FuncPtr_update_image',
    '_FuncPtr_append_buffer',
    '_FuncPtr_begin_pass',
    '_FuncPtr_apply_viewport',
    '_FuncPtr_apply_scissor_rect',
    '_FuncPtr_apply_pipeline',
    '_FuncPtr_apply_bindings',
    '_FuncPtr_apply_uniforms',
    '_FuncPtr_draw',
    '_FuncPtr_draw_ex',
    '_FuncPtr_dispatch',
    '_FuncPtr_end_pass',
    '_FuncPtr_commit',
    '_FuncPtr_alloc_buffer',
    '_FuncPtr_alloc_image',
    '_FuncPtr_alloc_sampler',
    '_FuncPtr_alloc_shader',
    '_FuncPtr_alloc_pipeline',
    '_FuncPtr_alloc_view',
    '_FuncPtr_dealloc_buffer',
    '_FuncPtr_dealloc_image',
    '_FuncPtr_dealloc_sampler',
    '_FuncPtr_dealloc_shader',
    '_FuncPtr_dealloc_pipeline',
    '_FuncPtr_dealloc_view',
    '_FuncPtr_init_buffer',
    '_FuncPtr_init_image',
    '_FuncPtr_init_sampler',
    '_FuncPtr_init_shader',
    '_FuncPtr_init_pipeline',
    '_FuncPtr_init_view',
    '_FuncPtr_uninit_buffer',
    '_FuncPtr_uninit_image',
    '_FuncPtr_uninit_sampler',
    '_FuncPtr_uninit_shader',
    '_FuncPtr_uninit_pipeline',
    '_FuncPtr_uninit_view',
    '_FuncPtr_fail_buffer',
    '_FuncPtr_fail_image',
    '_FuncPtr_fail_sampler',
    '_FuncPtr_fail_shader',
    '_FuncPtr_fail_pipeline',
    '_FuncPtr_fail_view',
    '_FuncPtr_push_debug_group',
    '_FuncPtr_pop_debug_group',
    '_FuncPtr_func',
    '_FuncPtr_alloc_fn',
    '_FuncPtr_free_fn',
    '_FuncPtr_init_cb',
    '_FuncPtr_frame_cb',
    '_FuncPtr_cleanup_cb',
    '_FuncPtr_event_cb',
    '_FuncPtr_init_userdata_cb',
    '_FuncPtr_frame_userdata_cb',
    '_FuncPtr_cleanup_userdata_cb',
    '_FuncPtr_event_userdata_cb',
    '_FuncPtr_callback',
    'GETDPIFORWINDOW_T',
    'SETPROCESSDPIAWARE_T',
    'SETPROCESSDPIAWARENESSCONTEXT_T',
    'SETPROCESSDPIAWARENESS_T',
    'GETDPIFORMONITOR_T',
    '_get_lib_path',
    'load_sokol',
    'load_sokol_dll',
    'get_lib',
    'make_range',
    'make_buffer_from_array',
]