lateralis/sokol/gfx/gfx.odin

1599 lines
45 KiB
Odin
Raw Permalink Normal View History

2025-02-03 18:15:56 +13:00
// machine generated, do not edit
package sokol_gfx
import "core:c"
SOKOL_DEBUG :: #config(SOKOL_DEBUG, ODIN_DEBUG)
DEBUG :: #config(SOKOL_GFX_DEBUG, SOKOL_DEBUG)
USE_GL :: #config(SOKOL_USE_GL, false)
USE_DLL :: #config(SOKOL_DLL, false)
when ODIN_OS == .Windows {
when USE_DLL {
when USE_GL {
when DEBUG { foreign import sokol_gfx_clib { "../sokol_dll_windows_x64_gl_debug.lib" } }
else { foreign import sokol_gfx_clib { "../sokol_dll_windows_x64_gl_release.lib" } }
} else {
when DEBUG { foreign import sokol_gfx_clib { "../sokol_dll_windows_x64_d3d11_debug.lib" } }
else { foreign import sokol_gfx_clib { "../sokol_dll_windows_x64_d3d11_release.lib" } }
}
} else {
when USE_GL {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_windows_x64_gl_debug.lib" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_windows_x64_gl_release.lib" } }
} else {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_windows_x64_d3d11_debug.lib" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_windows_x64_d3d11_release.lib" } }
}
}
} else when ODIN_OS == .Darwin {
when USE_DLL {
when USE_GL && ODIN_ARCH == .arm64 && DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_arm64_gl_debug.dylib" } }
else when USE_GL && ODIN_ARCH == .arm64 && !DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_arm64_gl_release.dylib" } }
else when USE_GL && ODIN_ARCH == .amd64 && DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_x64_gl_debug.dylib" } }
else when USE_GL && ODIN_ARCH == .amd64 && !DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_x64_gl_release.dylib" } }
else when !USE_GL && ODIN_ARCH == .arm64 && DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_arm64_metal_debug.dylib" } }
else when !USE_GL && ODIN_ARCH == .arm64 && !DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_arm64_metal_release.dylib" } }
else when !USE_GL && ODIN_ARCH == .amd64 && DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_x64_metal_debug.dylib" } }
else when !USE_GL && ODIN_ARCH == .amd64 && !DEBUG { foreign import sokol_gfx_clib { "../dylib/sokol_dylib_macos_x64_metal_release.dylib" } }
} else {
when USE_GL {
when ODIN_ARCH == .arm64 {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_macos_arm64_gl_debug.a", "system:Cocoa.framework","system:QuartzCore.framework","system:OpenGL.framework" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_macos_arm64_gl_release.a", "system:Cocoa.framework","system:QuartzCore.framework","system:OpenGL.framework" } }
} else {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_macos_x64_gl_debug.a", "system:Cocoa.framework","system:QuartzCore.framework","system:OpenGL.framework" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_macos_x64_gl_release.a", "system:Cocoa.framework","system:QuartzCore.framework","system:OpenGL.framework" } }
}
} else {
when ODIN_ARCH == .arm64 {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_macos_arm64_metal_debug.a", "system:Cocoa.framework","system:QuartzCore.framework","system:Metal.framework","system:MetalKit.framework" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_macos_arm64_metal_release.a", "system:Cocoa.framework","system:QuartzCore.framework","system:Metal.framework","system:MetalKit.framework" } }
} else {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_macos_x64_metal_debug.a", "system:Cocoa.framework","system:QuartzCore.framework","system:Metal.framework","system:MetalKit.framework" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_macos_x64_metal_release.a", "system:Cocoa.framework","system:QuartzCore.framework","system:Metal.framework","system:MetalKit.framework" } }
}
}
}
} else when ODIN_OS == .Linux {
when USE_DLL {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_linux_x64_gl_debug.so", "system:GL", "system:dl", "system:pthread" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_linux_x64_gl_release.so", "system:GL", "system:dl", "system:pthread" } }
} else {
when DEBUG { foreign import sokol_gfx_clib { "sokol_gfx_linux_x64_gl_debug.a", "system:GL", "system:dl", "system:pthread" } }
else { foreign import sokol_gfx_clib { "sokol_gfx_linux_x64_gl_release.a", "system:GL", "system:dl", "system:pthread" } }
}
} else {
#panic("This OS is currently not supported")
}
@(default_calling_convention="c", link_prefix="sg_")
foreign sokol_gfx_clib {
setup :: proc(#by_ptr desc: Desc) ---
shutdown :: proc() ---
isvalid :: proc() -> bool ---
reset_state_cache :: proc() ---
push_debug_group :: proc(name: cstring) ---
pop_debug_group :: proc() ---
add_commit_listener :: proc(listener: Commit_Listener) -> bool ---
remove_commit_listener :: proc(listener: Commit_Listener) -> bool ---
make_buffer :: proc(#by_ptr desc: Buffer_Desc) -> Buffer ---
make_image :: proc(#by_ptr desc: Image_Desc) -> Image ---
make_sampler :: proc(#by_ptr desc: Sampler_Desc) -> Sampler ---
make_shader :: proc(#by_ptr desc: Shader_Desc) -> Shader ---
make_pipeline :: proc(#by_ptr desc: Pipeline_Desc) -> Pipeline ---
make_attachments :: proc(#by_ptr desc: Attachments_Desc) -> Attachments ---
destroy_buffer :: proc(buf: Buffer) ---
destroy_image :: proc(img: Image) ---
destroy_sampler :: proc(smp: Sampler) ---
destroy_shader :: proc(shd: Shader) ---
destroy_pipeline :: proc(pip: Pipeline) ---
destroy_attachments :: proc(atts: Attachments) ---
update_buffer :: proc(buf: Buffer, #by_ptr data: Range) ---
update_image :: proc(img: Image, #by_ptr data: Image_Data) ---
append_buffer :: proc(buf: Buffer, #by_ptr data: Range) -> c.int ---
query_buffer_overflow :: proc(buf: Buffer) -> bool ---
query_buffer_will_overflow :: proc(buf: Buffer, size: c.size_t) -> bool ---
begin_pass :: proc(#by_ptr pass: Pass) ---
apply_viewport :: proc(#any_int x: c.int, #any_int y: c.int, #any_int width: c.int, #any_int height: c.int, origin_top_left: bool) ---
apply_viewportf :: proc(x: f32, y: f32, width: f32, height: f32, origin_top_left: bool) ---
apply_scissor_rect :: proc(#any_int x: c.int, #any_int y: c.int, #any_int width: c.int, #any_int height: c.int, origin_top_left: bool) ---
apply_scissor_rectf :: proc(x: f32, y: f32, width: f32, height: f32, origin_top_left: bool) ---
apply_pipeline :: proc(pip: Pipeline) ---
apply_bindings :: proc(#by_ptr bindings: Bindings) ---
apply_uniforms :: proc(#any_int ub_slot: c.int, #by_ptr data: Range) ---
draw :: proc(#any_int base_element: c.int, #any_int num_elements: c.int, #any_int num_instances: c.int) ---
end_pass :: proc() ---
commit :: proc() ---
query_desc :: proc() -> Desc ---
query_backend :: proc() -> Backend ---
query_features :: proc() -> Features ---
query_limits :: proc() -> Limits ---
query_pixelformat :: proc(fmt: Pixel_Format) -> Pixelformat_Info ---
query_row_pitch :: proc(fmt: Pixel_Format, #any_int width: c.int, #any_int row_align_bytes: c.int) -> c.int ---
query_surface_pitch :: proc(fmt: Pixel_Format, #any_int width: c.int, #any_int height: c.int, #any_int row_align_bytes: c.int) -> c.int ---
query_buffer_state :: proc(buf: Buffer) -> Resource_State ---
query_image_state :: proc(img: Image) -> Resource_State ---
query_sampler_state :: proc(smp: Sampler) -> Resource_State ---
query_shader_state :: proc(shd: Shader) -> Resource_State ---
query_pipeline_state :: proc(pip: Pipeline) -> Resource_State ---
query_attachments_state :: proc(atts: Attachments) -> Resource_State ---
query_buffer_info :: proc(buf: Buffer) -> Buffer_Info ---
query_image_info :: proc(img: Image) -> Image_Info ---
query_sampler_info :: proc(smp: Sampler) -> Sampler_Info ---
query_shader_info :: proc(shd: Shader) -> Shader_Info ---
query_pipeline_info :: proc(pip: Pipeline) -> Pipeline_Info ---
query_attachments_info :: proc(atts: Attachments) -> Attachments_Info ---
query_buffer_desc :: proc(buf: Buffer) -> Buffer_Desc ---
query_image_desc :: proc(img: Image) -> Image_Desc ---
query_sampler_desc :: proc(smp: Sampler) -> Sampler_Desc ---
query_shader_desc :: proc(shd: Shader) -> Shader_Desc ---
query_pipeline_desc :: proc(pip: Pipeline) -> Pipeline_Desc ---
query_attachments_desc :: proc(atts: Attachments) -> Attachments_Desc ---
query_buffer_defaults :: proc(#by_ptr desc: Buffer_Desc) -> Buffer_Desc ---
query_image_defaults :: proc(#by_ptr desc: Image_Desc) -> Image_Desc ---
query_sampler_defaults :: proc(#by_ptr desc: Sampler_Desc) -> Sampler_Desc ---
query_shader_defaults :: proc(#by_ptr desc: Shader_Desc) -> Shader_Desc ---
query_pipeline_defaults :: proc(#by_ptr desc: Pipeline_Desc) -> Pipeline_Desc ---
query_attachments_defaults :: proc(#by_ptr desc: Attachments_Desc) -> Attachments_Desc ---
query_buffer_size :: proc(buf: Buffer) -> c.size_t ---
query_buffer_type :: proc(buf: Buffer) -> Buffer_Type ---
query_buffer_usage :: proc(buf: Buffer) -> Usage ---
query_image_type :: proc(img: Image) -> Image_Type ---
query_image_width :: proc(img: Image) -> c.int ---
query_image_height :: proc(img: Image) -> c.int ---
query_image_num_slices :: proc(img: Image) -> c.int ---
query_image_num_mipmaps :: proc(img: Image) -> c.int ---
query_image_pixelformat :: proc(img: Image) -> Pixel_Format ---
query_image_usage :: proc(img: Image) -> Usage ---
query_image_sample_count :: proc(img: Image) -> c.int ---
alloc_buffer :: proc() -> Buffer ---
alloc_image :: proc() -> Image ---
alloc_sampler :: proc() -> Sampler ---
alloc_shader :: proc() -> Shader ---
alloc_pipeline :: proc() -> Pipeline ---
alloc_attachments :: proc() -> Attachments ---
dealloc_buffer :: proc(buf: Buffer) ---
dealloc_image :: proc(img: Image) ---
dealloc_sampler :: proc(smp: Sampler) ---
dealloc_shader :: proc(shd: Shader) ---
dealloc_pipeline :: proc(pip: Pipeline) ---
dealloc_attachments :: proc(attachments: Attachments) ---
init_buffer :: proc(buf: Buffer, #by_ptr desc: Buffer_Desc) ---
init_image :: proc(img: Image, #by_ptr desc: Image_Desc) ---
init_sampler :: proc(smg: Sampler, #by_ptr desc: Sampler_Desc) ---
init_shader :: proc(shd: Shader, #by_ptr desc: Shader_Desc) ---
init_pipeline :: proc(pip: Pipeline, #by_ptr desc: Pipeline_Desc) ---
init_attachments :: proc(attachments: Attachments, #by_ptr desc: Attachments_Desc) ---
uninit_buffer :: proc(buf: Buffer) ---
uninit_image :: proc(img: Image) ---
uninit_sampler :: proc(smp: Sampler) ---
uninit_shader :: proc(shd: Shader) ---
uninit_pipeline :: proc(pip: Pipeline) ---
uninit_attachments :: proc(atts: Attachments) ---
fail_buffer :: proc(buf: Buffer) ---
fail_image :: proc(img: Image) ---
fail_sampler :: proc(smp: Sampler) ---
fail_shader :: proc(shd: Shader) ---
fail_pipeline :: proc(pip: Pipeline) ---
fail_attachments :: proc(atts: Attachments) ---
enable_frame_stats :: proc() ---
disable_frame_stats :: proc() ---
frame_stats_enabled :: proc() -> bool ---
query_frame_stats :: proc() -> Frame_Stats ---
d3d11_device :: proc() -> rawptr ---
d3d11_device_context :: proc() -> rawptr ---
d3d11_query_buffer_info :: proc(buf: Buffer) -> D3d11_Buffer_Info ---
d3d11_query_image_info :: proc(img: Image) -> D3d11_Image_Info ---
d3d11_query_sampler_info :: proc(smp: Sampler) -> D3d11_Sampler_Info ---
d3d11_query_shader_info :: proc(shd: Shader) -> D3d11_Shader_Info ---
d3d11_query_pipeline_info :: proc(pip: Pipeline) -> D3d11_Pipeline_Info ---
d3d11_query_attachments_info :: proc(atts: Attachments) -> D3d11_Attachments_Info ---
mtl_device :: proc() -> rawptr ---
mtl_render_command_encoder :: proc() -> rawptr ---
mtl_query_buffer_info :: proc(buf: Buffer) -> Mtl_Buffer_Info ---
mtl_query_image_info :: proc(img: Image) -> Mtl_Image_Info ---
mtl_query_sampler_info :: proc(smp: Sampler) -> Mtl_Sampler_Info ---
mtl_query_shader_info :: proc(shd: Shader) -> Mtl_Shader_Info ---
mtl_query_pipeline_info :: proc(pip: Pipeline) -> Mtl_Pipeline_Info ---
wgpu_device :: proc() -> rawptr ---
wgpu_queue :: proc() -> rawptr ---
wgpu_command_encoder :: proc() -> rawptr ---
wgpu_render_pass_encoder :: proc() -> rawptr ---
wgpu_query_buffer_info :: proc(buf: Buffer) -> Wgpu_Buffer_Info ---
wgpu_query_image_info :: proc(img: Image) -> Wgpu_Image_Info ---
wgpu_query_sampler_info :: proc(smp: Sampler) -> Wgpu_Sampler_Info ---
wgpu_query_shader_info :: proc(shd: Shader) -> Wgpu_Shader_Info ---
wgpu_query_pipeline_info :: proc(pip: Pipeline) -> Wgpu_Pipeline_Info ---
wgpu_query_attachments_info :: proc(atts: Attachments) -> Wgpu_Attachments_Info ---
gl_query_buffer_info :: proc(buf: Buffer) -> Gl_Buffer_Info ---
gl_query_image_info :: proc(img: Image) -> Gl_Image_Info ---
gl_query_sampler_info :: proc(smp: Sampler) -> Gl_Sampler_Info ---
gl_query_shader_info :: proc(shd: Shader) -> Gl_Shader_Info ---
gl_query_attachments_info :: proc(atts: Attachments) -> Gl_Attachments_Info ---
}
Buffer :: struct {
id : u32,
}
Image :: struct {
id : u32,
}
Sampler :: struct {
id : u32,
}
Shader :: struct {
id : u32,
}
Pipeline :: struct {
id : u32,
}
Attachments :: struct {
id : u32,
}
Range :: struct {
ptr : rawptr,
size : c.size_t,
}
INVALID_ID :: 0
NUM_INFLIGHT_FRAMES :: 2
MAX_COLOR_ATTACHMENTS :: 4
MAX_UNIFORMBLOCK_MEMBERS :: 16
MAX_VERTEX_ATTRIBUTES :: 16
MAX_MIPMAPS :: 16
MAX_TEXTUREARRAY_LAYERS :: 128
MAX_UNIFORMBLOCK_BINDSLOTS :: 8
MAX_VERTEXBUFFER_BINDSLOTS :: 8
MAX_IMAGE_BINDSLOTS :: 16
MAX_SAMPLER_BINDSLOTS :: 16
MAX_STORAGEBUFFER_BINDSLOTS :: 8
MAX_IMAGE_SAMPLER_PAIRS :: 16
Color :: struct {
r : f32,
g : f32,
b : f32,
a : f32,
}
Backend :: enum i32 {
GLCORE,
GLES3,
D3D11,
METAL_IOS,
METAL_MACOS,
METAL_SIMULATOR,
WGPU,
DUMMY,
}
Pixel_Format :: enum i32 {
DEFAULT,
NONE,
R8,
R8SN,
R8UI,
R8SI,
R16,
R16SN,
R16UI,
R16SI,
R16F,
RG8,
RG8SN,
RG8UI,
RG8SI,
R32UI,
R32SI,
R32F,
RG16,
RG16SN,
RG16UI,
RG16SI,
RG16F,
RGBA8,
SRGB8A8,
RGBA8SN,
RGBA8UI,
RGBA8SI,
BGRA8,
RGB10A2,
RG11B10F,
RGB9E5,
RG32UI,
RG32SI,
RG32F,
RGBA16,
RGBA16SN,
RGBA16UI,
RGBA16SI,
RGBA16F,
RGBA32UI,
RGBA32SI,
RGBA32F,
DEPTH,
DEPTH_STENCIL,
BC1_RGBA,
BC2_RGBA,
BC3_RGBA,
BC3_SRGBA,
BC4_R,
BC4_RSN,
BC5_RG,
BC5_RGSN,
BC6H_RGBF,
BC6H_RGBUF,
BC7_RGBA,
BC7_SRGBA,
PVRTC_RGB_2BPP,
PVRTC_RGB_4BPP,
PVRTC_RGBA_2BPP,
PVRTC_RGBA_4BPP,
ETC2_RGB8,
ETC2_SRGB8,
ETC2_RGB8A1,
ETC2_RGBA8,
ETC2_SRGB8A8,
EAC_R11,
EAC_R11SN,
EAC_RG11,
EAC_RG11SN,
ASTC_4x4_RGBA,
ASTC_4x4_SRGBA,
}
Pixelformat_Info :: struct {
sample : bool,
filter : bool,
render : bool,
blend : bool,
msaa : bool,
depth : bool,
compressed : bool,
bytes_per_pixel : c.int,
}
Features :: struct {
origin_top_left : bool,
image_clamp_to_border : bool,
mrt_independent_blend_state : bool,
mrt_independent_write_mask : bool,
storage_buffer : bool,
msaa_image_bindings : bool,
}
Limits :: struct {
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,
gl_max_vertex_uniform_components : c.int,
gl_max_combined_texture_image_units : c.int,
}
Resource_State :: enum i32 {
INITIAL,
ALLOC,
VALID,
FAILED,
INVALID,
}
Usage :: enum i32 {
DEFAULT,
IMMUTABLE,
DYNAMIC,
STREAM,
}
Buffer_Type :: enum i32 {
DEFAULT,
VERTEXBUFFER,
INDEXBUFFER,
STORAGEBUFFER,
}
Index_Type :: enum i32 {
DEFAULT,
NONE,
UINT16,
UINT32,
}
Image_Type :: enum i32 {
DEFAULT,
_2D,
CUBE,
_3D,
ARRAY,
}
Image_Sample_Type :: enum i32 {
DEFAULT,
FLOAT,
DEPTH,
SINT,
UINT,
UNFILTERABLE_FLOAT,
}
Sampler_Type :: enum i32 {
DEFAULT,
FILTERING,
NONFILTERING,
COMPARISON,
}
Cube_Face :: enum i32 {
POS_X,
NEG_X,
POS_Y,
NEG_Y,
POS_Z,
NEG_Z,
}
Primitive_Type :: enum i32 {
DEFAULT,
POINTS,
LINES,
LINE_STRIP,
TRIANGLES,
TRIANGLE_STRIP,
}
Filter :: enum i32 {
DEFAULT,
NEAREST,
LINEAR,
}
Wrap :: enum i32 {
DEFAULT,
REPEAT,
CLAMP_TO_EDGE,
CLAMP_TO_BORDER,
MIRRORED_REPEAT,
}
Border_Color :: enum i32 {
DEFAULT,
TRANSPARENT_BLACK,
OPAQUE_BLACK,
OPAQUE_WHITE,
}
Vertex_Format :: enum i32 {
INVALID,
FLOAT,
FLOAT2,
FLOAT3,
FLOAT4,
BYTE4,
BYTE4N,
UBYTE4,
UBYTE4N,
SHORT2,
SHORT2N,
USHORT2N,
SHORT4,
SHORT4N,
USHORT4N,
UINT10_N2,
HALF2,
HALF4,
}
Vertex_Step :: enum i32 {
DEFAULT,
PER_VERTEX,
PER_INSTANCE,
}
Uniform_Type :: enum i32 {
INVALID,
FLOAT,
FLOAT2,
FLOAT3,
FLOAT4,
INT,
INT2,
INT3,
INT4,
MAT4,
}
Uniform_Layout :: enum i32 {
DEFAULT,
NATIVE,
STD140,
}
Cull_Mode :: enum i32 {
DEFAULT,
NONE,
FRONT,
BACK,
}
Face_Winding :: enum i32 {
DEFAULT,
CCW,
CW,
}
Compare_Func :: enum i32 {
DEFAULT,
NEVER,
LESS,
EQUAL,
LESS_EQUAL,
GREATER,
NOT_EQUAL,
GREATER_EQUAL,
ALWAYS,
}
Stencil_Op :: enum i32 {
DEFAULT,
KEEP,
ZERO,
REPLACE,
INCR_CLAMP,
DECR_CLAMP,
INVERT,
INCR_WRAP,
DECR_WRAP,
}
Blend_Factor :: enum i32 {
DEFAULT,
ZERO,
ONE,
SRC_COLOR,
ONE_MINUS_SRC_COLOR,
SRC_ALPHA,
ONE_MINUS_SRC_ALPHA,
DST_COLOR,
ONE_MINUS_DST_COLOR,
DST_ALPHA,
ONE_MINUS_DST_ALPHA,
SRC_ALPHA_SATURATED,
BLEND_COLOR,
ONE_MINUS_BLEND_COLOR,
BLEND_ALPHA,
ONE_MINUS_BLEND_ALPHA,
}
Blend_Op :: enum i32 {
DEFAULT,
ADD,
SUBTRACT,
REVERSE_SUBTRACT,
}
Color_Mask :: enum i32 {
DEFAULT = 0,
NONE = 16,
R = 1,
G = 2,
RG = 3,
B = 4,
RB = 5,
GB = 6,
RGB = 7,
A = 8,
RA = 9,
GA = 10,
RGA = 11,
BA = 12,
RBA = 13,
GBA = 14,
RGBA = 15,
}
Load_Action :: enum i32 {
DEFAULT,
CLEAR,
LOAD,
DONTCARE,
}
Store_Action :: enum i32 {
DEFAULT,
STORE,
DONTCARE,
}
Color_Attachment_Action :: struct {
load_action : Load_Action,
store_action : Store_Action,
clear_value : Color,
}
Depth_Attachment_Action :: struct {
load_action : Load_Action,
store_action : Store_Action,
clear_value : f32,
}
Stencil_Attachment_Action :: struct {
load_action : Load_Action,
store_action : Store_Action,
clear_value : u8,
}
Pass_Action :: struct {
colors : [4]Color_Attachment_Action,
depth : Depth_Attachment_Action,
stencil : Stencil_Attachment_Action,
}
Metal_Swapchain :: struct {
current_drawable : rawptr,
depth_stencil_texture : rawptr,
msaa_color_texture : rawptr,
}
D3d11_Swapchain :: struct {
render_view : rawptr,
resolve_view : rawptr,
depth_stencil_view : rawptr,
}
Wgpu_Swapchain :: struct {
render_view : rawptr,
resolve_view : rawptr,
depth_stencil_view : rawptr,
}
Gl_Swapchain :: struct {
framebuffer : u32,
}
Swapchain :: struct {
width : c.int,
height : c.int,
sample_count : c.int,
color_format : Pixel_Format,
depth_format : Pixel_Format,
metal : Metal_Swapchain,
d3d11 : D3d11_Swapchain,
wgpu : Wgpu_Swapchain,
gl : Gl_Swapchain,
}
Pass :: struct {
_ : u32,
action : Pass_Action,
attachments : Attachments,
swapchain : Swapchain,
label : cstring,
_ : u32,
}
Bindings :: struct {
_ : u32,
vertex_buffers : [8]Buffer,
vertex_buffer_offsets : [8]c.int,
index_buffer : Buffer,
index_buffer_offset : c.int,
images : [16]Image,
samplers : [16]Sampler,
storage_buffers : [8]Buffer,
_ : u32,
}
Buffer_Desc :: struct {
_ : u32,
size : c.size_t,
type : Buffer_Type,
usage : Usage,
data : Range,
label : cstring,
gl_buffers : [2]u32,
mtl_buffers : [2]rawptr,
d3d11_buffer : rawptr,
wgpu_buffer : rawptr,
_ : u32,
}
Image_Data :: struct {
subimage : [6][16]Range,
}
Image_Desc :: struct {
_ : u32,
type : Image_Type,
render_target : bool,
width : c.int,
height : c.int,
num_slices : c.int,
num_mipmaps : c.int,
usage : Usage,
pixel_format : Pixel_Format,
sample_count : c.int,
data : Image_Data,
label : cstring,
gl_textures : [2]u32,
gl_texture_target : u32,
mtl_textures : [2]rawptr,
d3d11_texture : rawptr,
d3d11_shader_resource_view : rawptr,
wgpu_texture : rawptr,
wgpu_texture_view : rawptr,
_ : u32,
}
Sampler_Desc :: struct {
_ : u32,
min_filter : Filter,
mag_filter : Filter,
mipmap_filter : Filter,
wrap_u : Wrap,
wrap_v : Wrap,
wrap_w : Wrap,
min_lod : f32,
max_lod : f32,
border_color : Border_Color,
compare : Compare_Func,
max_anisotropy : u32,
label : cstring,
gl_sampler : u32,
mtl_sampler : rawptr,
d3d11_sampler : rawptr,
wgpu_sampler : rawptr,
_ : u32,
}
Shader_Stage :: enum i32 {
NONE,
VERTEX,
FRAGMENT,
}
Shader_Function :: struct {
source : cstring,
bytecode : Range,
entry : cstring,
d3d11_target : cstring,
}
Shader_Vertex_Attr :: struct {
glsl_name : cstring,
hlsl_sem_name : cstring,
hlsl_sem_index : u8,
}
Glsl_Shader_Uniform :: struct {
type : Uniform_Type,
array_count : u16,
glsl_name : cstring,
}
Shader_Uniform_Block :: struct {
stage : Shader_Stage,
size : u32,
hlsl_register_b_n : u8,
msl_buffer_n : u8,
wgsl_group0_binding_n : u8,
layout : Uniform_Layout,
glsl_uniforms : [16]Glsl_Shader_Uniform,
}
Shader_Image :: struct {
stage : Shader_Stage,
image_type : Image_Type,
sample_type : Image_Sample_Type,
multisampled : bool,
hlsl_register_t_n : u8,
msl_texture_n : u8,
wgsl_group1_binding_n : u8,
}
Shader_Sampler :: struct {
stage : Shader_Stage,
sampler_type : Sampler_Type,
hlsl_register_s_n : u8,
msl_sampler_n : u8,
wgsl_group1_binding_n : u8,
}
Shader_Storage_Buffer :: struct {
stage : Shader_Stage,
readonly : bool,
hlsl_register_t_n : u8,
msl_buffer_n : u8,
wgsl_group1_binding_n : u8,
glsl_binding_n : u8,
}
Shader_Image_Sampler_Pair :: struct {
stage : Shader_Stage,
image_slot : u8,
sampler_slot : u8,
glsl_name : cstring,
}
Shader_Desc :: struct {
_ : u32,
vertex_func : Shader_Function,
fragment_func : Shader_Function,
attrs : [16]Shader_Vertex_Attr,
uniform_blocks : [8]Shader_Uniform_Block,
storage_buffers : [8]Shader_Storage_Buffer,
images : [16]Shader_Image,
samplers : [16]Shader_Sampler,
image_sampler_pairs : [16]Shader_Image_Sampler_Pair,
label : cstring,
_ : u32,
}
Vertex_Buffer_Layout_State :: struct {
stride : c.int,
step_func : Vertex_Step,
step_rate : c.int,
}
Vertex_Attr_State :: struct {
buffer_index : c.int,
offset : c.int,
format : Vertex_Format,
}
Vertex_Layout_State :: struct {
buffers : [8]Vertex_Buffer_Layout_State,
attrs : [16]Vertex_Attr_State,
}
Stencil_Face_State :: struct {
compare : Compare_Func,
fail_op : Stencil_Op,
depth_fail_op : Stencil_Op,
pass_op : Stencil_Op,
}
Stencil_State :: struct {
enabled : bool,
front : Stencil_Face_State,
back : Stencil_Face_State,
read_mask : u8,
write_mask : u8,
ref : u8,
}
Depth_State :: struct {
pixel_format : Pixel_Format,
compare : Compare_Func,
write_enabled : bool,
bias : f32,
bias_slope_scale : f32,
bias_clamp : f32,
}
Blend_State :: struct {
enabled : bool,
src_factor_rgb : Blend_Factor,
dst_factor_rgb : Blend_Factor,
op_rgb : Blend_Op,
src_factor_alpha : Blend_Factor,
dst_factor_alpha : Blend_Factor,
op_alpha : Blend_Op,
}
Color_Target_State :: struct {
pixel_format : Pixel_Format,
write_mask : Color_Mask,
blend : Blend_State,
}
Pipeline_Desc :: struct {
_ : u32,
shader : Shader,
layout : Vertex_Layout_State,
depth : Depth_State,
stencil : Stencil_State,
color_count : c.int,
colors : [4]Color_Target_State,
primitive_type : Primitive_Type,
index_type : Index_Type,
cull_mode : Cull_Mode,
face_winding : Face_Winding,
sample_count : c.int,
blend_color : Color,
alpha_to_coverage_enabled : bool,
label : cstring,
_ : u32,
}
Attachment_Desc :: struct {
image : Image,
mip_level : c.int,
slice : c.int,
}
Attachments_Desc :: struct {
_ : u32,
colors : [4]Attachment_Desc,
resolves : [4]Attachment_Desc,
depth_stencil : Attachment_Desc,
label : cstring,
_ : u32,
}
Slot_Info :: struct {
state : Resource_State,
res_id : u32,
}
Buffer_Info :: struct {
slot : Slot_Info,
update_frame_index : u32,
append_frame_index : u32,
append_pos : c.int,
append_overflow : bool,
num_slots : c.int,
active_slot : c.int,
}
Image_Info :: struct {
slot : Slot_Info,
upd_frame_index : u32,
num_slots : c.int,
active_slot : c.int,
}
Sampler_Info :: struct {
slot : Slot_Info,
}
Shader_Info :: struct {
slot : Slot_Info,
}
Pipeline_Info :: struct {
slot : Slot_Info,
}
Attachments_Info :: struct {
slot : Slot_Info,
}
Frame_Stats_Gl :: struct {
num_bind_buffer : u32,
num_active_texture : u32,
num_bind_texture : u32,
num_bind_sampler : u32,
num_use_program : u32,
num_render_state : u32,
num_vertex_attrib_pointer : u32,
num_vertex_attrib_divisor : u32,
num_enable_vertex_attrib_array : u32,
num_disable_vertex_attrib_array : u32,
num_uniform : u32,
}
Frame_Stats_D3d11_Pass :: struct {
num_om_set_render_targets : u32,
num_clear_render_target_view : u32,
num_clear_depth_stencil_view : u32,
num_resolve_subresource : u32,
}
Frame_Stats_D3d11_Pipeline :: struct {
num_rs_set_state : u32,
num_om_set_depth_stencil_state : u32,
num_om_set_blend_state : u32,
num_ia_set_primitive_topology : u32,
num_ia_set_input_layout : u32,
num_vs_set_shader : u32,
num_vs_set_constant_buffers : u32,
num_ps_set_shader : u32,
num_ps_set_constant_buffers : u32,
}
Frame_Stats_D3d11_Bindings :: struct {
num_ia_set_vertex_buffers : u32,
num_ia_set_index_buffer : u32,
num_vs_set_shader_resources : u32,
num_ps_set_shader_resources : u32,
num_vs_set_samplers : u32,
num_ps_set_samplers : u32,
}
Frame_Stats_D3d11_Uniforms :: struct {
num_update_subresource : u32,
}
Frame_Stats_D3d11_Draw :: struct {
num_draw_indexed_instanced : u32,
num_draw_indexed : u32,
num_draw_instanced : u32,
num_draw : u32,
}
Frame_Stats_D3d11 :: struct {
pass : Frame_Stats_D3d11_Pass,
pipeline : Frame_Stats_D3d11_Pipeline,
bindings : Frame_Stats_D3d11_Bindings,
uniforms : Frame_Stats_D3d11_Uniforms,
draw : Frame_Stats_D3d11_Draw,
num_map : u32,
num_unmap : u32,
}
Frame_Stats_Metal_Idpool :: struct {
num_added : u32,
num_released : u32,
num_garbage_collected : u32,
}
Frame_Stats_Metal_Pipeline :: struct {
num_set_blend_color : u32,
num_set_cull_mode : u32,
num_set_front_facing_winding : u32,
num_set_stencil_reference_value : u32,
num_set_depth_bias : u32,
num_set_render_pipeline_state : u32,
num_set_depth_stencil_state : u32,
}
Frame_Stats_Metal_Bindings :: struct {
num_set_vertex_buffer : u32,
num_set_vertex_texture : u32,
num_set_vertex_sampler_state : u32,
num_set_fragment_buffer : u32,
num_set_fragment_texture : u32,
num_set_fragment_sampler_state : u32,
}
Frame_Stats_Metal_Uniforms :: struct {
num_set_vertex_buffer_offset : u32,
num_set_fragment_buffer_offset : u32,
}
Frame_Stats_Metal :: struct {
idpool : Frame_Stats_Metal_Idpool,
pipeline : Frame_Stats_Metal_Pipeline,
bindings : Frame_Stats_Metal_Bindings,
uniforms : Frame_Stats_Metal_Uniforms,
}
Frame_Stats_Wgpu_Uniforms :: struct {
num_set_bindgroup : u32,
size_write_buffer : u32,
}
Frame_Stats_Wgpu_Bindings :: struct {
num_set_vertex_buffer : u32,
num_skip_redundant_vertex_buffer : u32,
num_set_index_buffer : u32,
num_skip_redundant_index_buffer : u32,
num_create_bindgroup : u32,
num_discard_bindgroup : u32,
num_set_bindgroup : u32,
num_skip_redundant_bindgroup : u32,
num_bindgroup_cache_hits : u32,
num_bindgroup_cache_misses : u32,
num_bindgroup_cache_collisions : u32,
num_bindgroup_cache_invalidates : u32,
num_bindgroup_cache_hash_vs_key_mismatch : u32,
}
Frame_Stats_Wgpu :: struct {
uniforms : Frame_Stats_Wgpu_Uniforms,
bindings : Frame_Stats_Wgpu_Bindings,
}
Frame_Stats :: struct {
frame_index : u32,
num_passes : u32,
num_apply_viewport : u32,
num_apply_scissor_rect : u32,
num_apply_pipeline : u32,
num_apply_bindings : u32,
num_apply_uniforms : u32,
num_draw : u32,
num_update_buffer : u32,
num_append_buffer : u32,
num_update_image : u32,
size_apply_uniforms : u32,
size_update_buffer : u32,
size_append_buffer : u32,
size_update_image : u32,
gl : Frame_Stats_Gl,
d3d11 : Frame_Stats_D3d11,
metal : Frame_Stats_Metal,
wgpu : Frame_Stats_Wgpu,
}
Log_Item :: enum i32 {
OK,
MALLOC_FAILED,
GL_TEXTURE_FORMAT_NOT_SUPPORTED,
GL_3D_TEXTURES_NOT_SUPPORTED,
GL_ARRAY_TEXTURES_NOT_SUPPORTED,
GL_SHADER_COMPILATION_FAILED,
GL_SHADER_LINKING_FAILED,
GL_VERTEX_ATTRIBUTE_NOT_FOUND_IN_SHADER,
GL_IMAGE_SAMPLER_NAME_NOT_FOUND_IN_SHADER,
GL_FRAMEBUFFER_STATUS_UNDEFINED,
GL_FRAMEBUFFER_STATUS_INCOMPLETE_ATTACHMENT,
GL_FRAMEBUFFER_STATUS_INCOMPLETE_MISSING_ATTACHMENT,
GL_FRAMEBUFFER_STATUS_UNSUPPORTED,
GL_FRAMEBUFFER_STATUS_INCOMPLETE_MULTISAMPLE,
GL_FRAMEBUFFER_STATUS_UNKNOWN,
D3D11_CREATE_BUFFER_FAILED,
D3D11_CREATE_BUFFER_SRV_FAILED,
D3D11_CREATE_DEPTH_TEXTURE_UNSUPPORTED_PIXEL_FORMAT,
D3D11_CREATE_DEPTH_TEXTURE_FAILED,
D3D11_CREATE_2D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT,
D3D11_CREATE_2D_TEXTURE_FAILED,
D3D11_CREATE_2D_SRV_FAILED,
D3D11_CREATE_3D_TEXTURE_UNSUPPORTED_PIXEL_FORMAT,
D3D11_CREATE_3D_TEXTURE_FAILED,
D3D11_CREATE_3D_SRV_FAILED,
D3D11_CREATE_MSAA_TEXTURE_FAILED,
D3D11_CREATE_SAMPLER_STATE_FAILED,
D3D11_LOAD_D3DCOMPILER_47_DLL_FAILED,
D3D11_SHADER_COMPILATION_FAILED,
D3D11_SHADER_COMPILATION_OUTPUT,
D3D11_CREATE_CONSTANT_BUFFER_FAILED,
D3D11_CREATE_INPUT_LAYOUT_FAILED,
D3D11_CREATE_RASTERIZER_STATE_FAILED,
D3D11_CREATE_DEPTH_STENCIL_STATE_FAILED,
D3D11_CREATE_BLEND_STATE_FAILED,
D3D11_CREATE_RTV_FAILED,
D3D11_CREATE_DSV_FAILED,
D3D11_MAP_FOR_UPDATE_BUFFER_FAILED,
D3D11_MAP_FOR_APPEND_BUFFER_FAILED,
D3D11_MAP_FOR_UPDATE_IMAGE_FAILED,
METAL_CREATE_BUFFER_FAILED,
METAL_TEXTURE_FORMAT_NOT_SUPPORTED,
METAL_CREATE_TEXTURE_FAILED,
METAL_CREATE_SAMPLER_FAILED,
METAL_SHADER_COMPILATION_FAILED,
METAL_SHADER_CREATION_FAILED,
METAL_SHADER_COMPILATION_OUTPUT,
METAL_SHADER_ENTRY_NOT_FOUND,
METAL_CREATE_RPS_FAILED,
METAL_CREATE_RPS_OUTPUT,
METAL_CREATE_DSS_FAILED,
WGPU_BINDGROUPS_POOL_EXHAUSTED,
WGPU_BINDGROUPSCACHE_SIZE_GREATER_ONE,
WGPU_BINDGROUPSCACHE_SIZE_POW2,
WGPU_CREATEBINDGROUP_FAILED,
WGPU_CREATE_BUFFER_FAILED,
WGPU_CREATE_TEXTURE_FAILED,
WGPU_CREATE_TEXTURE_VIEW_FAILED,
WGPU_CREATE_SAMPLER_FAILED,
WGPU_CREATE_SHADER_MODULE_FAILED,
WGPU_SHADER_CREATE_BINDGROUP_LAYOUT_FAILED,
WGPU_CREATE_PIPELINE_LAYOUT_FAILED,
WGPU_CREATE_RENDER_PIPELINE_FAILED,
WGPU_ATTACHMENTS_CREATE_TEXTURE_VIEW_FAILED,
DRAW_REQUIRED_BINDINGS_OR_UNIFORMS_MISSING,
IDENTICAL_COMMIT_LISTENER,
COMMIT_LISTENER_ARRAY_FULL,
TRACE_HOOKS_NOT_ENABLED,
DEALLOC_BUFFER_INVALID_STATE,
DEALLOC_IMAGE_INVALID_STATE,
DEALLOC_SAMPLER_INVALID_STATE,
DEALLOC_SHADER_INVALID_STATE,
DEALLOC_PIPELINE_INVALID_STATE,
DEALLOC_ATTACHMENTS_INVALID_STATE,
INIT_BUFFER_INVALID_STATE,
INIT_IMAGE_INVALID_STATE,
INIT_SAMPLER_INVALID_STATE,
INIT_SHADER_INVALID_STATE,
INIT_PIPELINE_INVALID_STATE,
INIT_ATTACHMENTS_INVALID_STATE,
UNINIT_BUFFER_INVALID_STATE,
UNINIT_IMAGE_INVALID_STATE,
UNINIT_SAMPLER_INVALID_STATE,
UNINIT_SHADER_INVALID_STATE,
UNINIT_PIPELINE_INVALID_STATE,
UNINIT_ATTACHMENTS_INVALID_STATE,
FAIL_BUFFER_INVALID_STATE,
FAIL_IMAGE_INVALID_STATE,
FAIL_SAMPLER_INVALID_STATE,
FAIL_SHADER_INVALID_STATE,
FAIL_PIPELINE_INVALID_STATE,
FAIL_ATTACHMENTS_INVALID_STATE,
BUFFER_POOL_EXHAUSTED,
IMAGE_POOL_EXHAUSTED,
SAMPLER_POOL_EXHAUSTED,
SHADER_POOL_EXHAUSTED,
PIPELINE_POOL_EXHAUSTED,
PASS_POOL_EXHAUSTED,
BEGINPASS_ATTACHMENT_INVALID,
DRAW_WITHOUT_BINDINGS,
VALIDATE_BUFFERDESC_CANARY,
VALIDATE_BUFFERDESC_SIZE,
VALIDATE_BUFFERDESC_DATA,
VALIDATE_BUFFERDESC_DATA_SIZE,
VALIDATE_BUFFERDESC_NO_DATA,
VALIDATE_BUFFERDESC_STORAGEBUFFER_SUPPORTED,
VALIDATE_BUFFERDESC_STORAGEBUFFER_SIZE_MULTIPLE_4,
VALIDATE_IMAGEDATA_NODATA,
VALIDATE_IMAGEDATA_DATA_SIZE,
VALIDATE_IMAGEDESC_CANARY,
VALIDATE_IMAGEDESC_WIDTH,
VALIDATE_IMAGEDESC_HEIGHT,
VALIDATE_IMAGEDESC_RT_PIXELFORMAT,
VALIDATE_IMAGEDESC_NONRT_PIXELFORMAT,
VALIDATE_IMAGEDESC_MSAA_BUT_NO_RT,
VALIDATE_IMAGEDESC_NO_MSAA_RT_SUPPORT,
VALIDATE_IMAGEDESC_MSAA_NUM_MIPMAPS,
VALIDATE_IMAGEDESC_MSAA_3D_IMAGE,
VALIDATE_IMAGEDESC_MSAA_CUBE_IMAGE,
VALIDATE_IMAGEDESC_DEPTH_3D_IMAGE,
VALIDATE_IMAGEDESC_RT_IMMUTABLE,
VALIDATE_IMAGEDESC_RT_NO_DATA,
VALIDATE_IMAGEDESC_INJECTED_NO_DATA,
VALIDATE_IMAGEDESC_DYNAMIC_NO_DATA,
VALIDATE_IMAGEDESC_COMPRESSED_IMMUTABLE,
VALIDATE_SAMPLERDESC_CANARY,
VALIDATE_SAMPLERDESC_ANISTROPIC_REQUIRES_LINEAR_FILTERING,
VALIDATE_SHADERDESC_CANARY,
VALIDATE_SHADERDESC_SOURCE,
VALIDATE_SHADERDESC_BYTECODE,
VALIDATE_SHADERDESC_SOURCE_OR_BYTECODE,
VALIDATE_SHADERDESC_NO_BYTECODE_SIZE,
VALIDATE_SHADERDESC_NO_CONT_UB_MEMBERS,
VALIDATE_SHADERDESC_UB_SIZE_IS_ZERO,
VALIDATE_SHADERDESC_UB_METAL_BUFFER_SLOT_OUT_OF_RANGE,
VALIDATE_SHADERDESC_UB_METAL_BUFFER_SLOT_COLLISION,
VALIDATE_SHADERDESC_UB_HLSL_REGISTER_B_OUT_OF_RANGE,
VALIDATE_SHADERDESC_UB_HLSL_REGISTER_B_COLLISION,
VALIDATE_SHADERDESC_UB_WGSL_GROUP0_BINDING_OUT_OF_RANGE,
VALIDATE_SHADERDESC_UB_WGSL_GROUP0_BINDING_COLLISION,
VALIDATE_SHADERDESC_NO_UB_MEMBERS,
VALIDATE_SHADERDESC_UB_UNIFORM_GLSL_NAME,
VALIDATE_SHADERDESC_UB_SIZE_MISMATCH,
VALIDATE_SHADERDESC_UB_ARRAY_COUNT,
VALIDATE_SHADERDESC_UB_STD140_ARRAY_TYPE,
VALIDATE_SHADERDESC_STORAGEBUFFER_METAL_BUFFER_SLOT_OUT_OF_RANGE,
VALIDATE_SHADERDESC_STORAGEBUFFER_METAL_BUFFER_SLOT_COLLISION,
VALIDATE_SHADERDESC_STORAGEBUFFER_HLSL_REGISTER_T_OUT_OF_RANGE,
VALIDATE_SHADERDESC_STORAGEBUFFER_HLSL_REGISTER_T_COLLISION,
VALIDATE_SHADERDESC_STORAGEBUFFER_GLSL_BINDING_OUT_OF_RANGE,
VALIDATE_SHADERDESC_STORAGEBUFFER_GLSL_BINDING_COLLISION,
VALIDATE_SHADERDESC_STORAGEBUFFER_WGSL_GROUP1_BINDING_OUT_OF_RANGE,
VALIDATE_SHADERDESC_STORAGEBUFFER_WGSL_GROUP1_BINDING_COLLISION,
VALIDATE_SHADERDESC_STORAGEBUFFER_READONLY,
VALIDATE_SHADERDESC_IMAGE_METAL_TEXTURE_SLOT_OUT_OF_RANGE,
VALIDATE_SHADERDESC_IMAGE_METAL_TEXTURE_SLOT_COLLISION,
VALIDATE_SHADERDESC_IMAGE_HLSL_REGISTER_T_OUT_OF_RANGE,
VALIDATE_SHADERDESC_IMAGE_HLSL_REGISTER_T_COLLISION,
VALIDATE_SHADERDESC_IMAGE_WGSL_GROUP1_BINDING_OUT_OF_RANGE,
VALIDATE_SHADERDESC_IMAGE_WGSL_GROUP1_BINDING_COLLISION,
VALIDATE_SHADERDESC_SAMPLER_METAL_SAMPLER_SLOT_OUT_OF_RANGE,
VALIDATE_SHADERDESC_SAMPLER_METAL_SAMPLER_SLOT_COLLISION,
VALIDATE_SHADERDESC_SAMPLER_HLSL_REGISTER_S_OUT_OF_RANGE,
VALIDATE_SHADERDESC_SAMPLER_HLSL_REGISTER_S_COLLISION,
VALIDATE_SHADERDESC_SAMPLER_WGSL_GROUP1_BINDING_OUT_OF_RANGE,
VALIDATE_SHADERDESC_SAMPLER_WGSL_GROUP1_BINDING_COLLISION,
VALIDATE_SHADERDESC_IMAGE_SAMPLER_PAIR_IMAGE_SLOT_OUT_OF_RANGE,
VALIDATE_SHADERDESC_IMAGE_SAMPLER_PAIR_SAMPLER_SLOT_OUT_OF_RANGE,
VALIDATE_SHADERDESC_IMAGE_SAMPLER_PAIR_IMAGE_STAGE_MISMATCH,
VALIDATE_SHADERDESC_IMAGE_SAMPLER_PAIR_SAMPLER_STAGE_MISMATCH,
VALIDATE_SHADERDESC_IMAGE_SAMPLER_PAIR_GLSL_NAME,
VALIDATE_SHADERDESC_NONFILTERING_SAMPLER_REQUIRED,
VALIDATE_SHADERDESC_COMPARISON_SAMPLER_REQUIRED,
VALIDATE_SHADERDESC_IMAGE_NOT_REFERENCED_BY_IMAGE_SAMPLER_PAIRS,
VALIDATE_SHADERDESC_SAMPLER_NOT_REFERENCED_BY_IMAGE_SAMPLER_PAIRS,
VALIDATE_SHADERDESC_ATTR_STRING_TOO_LONG,
VALIDATE_PIPELINEDESC_CANARY,
VALIDATE_PIPELINEDESC_SHADER,
VALIDATE_PIPELINEDESC_NO_CONT_ATTRS,
VALIDATE_PIPELINEDESC_LAYOUT_STRIDE4,
VALIDATE_PIPELINEDESC_ATTR_SEMANTICS,
VALIDATE_ATTACHMENTSDESC_CANARY,
VALIDATE_ATTACHMENTSDESC_NO_ATTACHMENTS,
VALIDATE_ATTACHMENTSDESC_NO_CONT_COLOR_ATTS,
VALIDATE_ATTACHMENTSDESC_IMAGE,
VALIDATE_ATTACHMENTSDESC_MIPLEVEL,
VALIDATE_ATTACHMENTSDESC_FACE,
VALIDATE_ATTACHMENTSDESC_LAYER,
VALIDATE_ATTACHMENTSDESC_SLICE,
VALIDATE_ATTACHMENTSDESC_IMAGE_NO_RT,
VALIDATE_ATTACHMENTSDESC_COLOR_INV_PIXELFORMAT,
VALIDATE_ATTACHMENTSDESC_DEPTH_INV_PIXELFORMAT,
VALIDATE_ATTACHMENTSDESC_IMAGE_SIZES,
VALIDATE_ATTACHMENTSDESC_IMAGE_SAMPLE_COUNTS,
VALIDATE_ATTACHMENTSDESC_RESOLVE_COLOR_IMAGE_MSAA,
VALIDATE_ATTACHMENTSDESC_RESOLVE_IMAGE,
VALIDATE_ATTACHMENTSDESC_RESOLVE_SAMPLE_COUNT,
VALIDATE_ATTACHMENTSDESC_RESOLVE_MIPLEVEL,
VALIDATE_ATTACHMENTSDESC_RESOLVE_FACE,
VALIDATE_ATTACHMENTSDESC_RESOLVE_LAYER,
VALIDATE_ATTACHMENTSDESC_RESOLVE_SLICE,
VALIDATE_ATTACHMENTSDESC_RESOLVE_IMAGE_NO_RT,
VALIDATE_ATTACHMENTSDESC_RESOLVE_IMAGE_SIZES,
VALIDATE_ATTACHMENTSDESC_RESOLVE_IMAGE_FORMAT,
VALIDATE_ATTACHMENTSDESC_DEPTH_IMAGE,
VALIDATE_ATTACHMENTSDESC_DEPTH_MIPLEVEL,
VALIDATE_ATTACHMENTSDESC_DEPTH_FACE,
VALIDATE_ATTACHMENTSDESC_DEPTH_LAYER,
VALIDATE_ATTACHMENTSDESC_DEPTH_SLICE,
VALIDATE_ATTACHMENTSDESC_DEPTH_IMAGE_NO_RT,
VALIDATE_ATTACHMENTSDESC_DEPTH_IMAGE_SIZES,
VALIDATE_ATTACHMENTSDESC_DEPTH_IMAGE_SAMPLE_COUNT,
VALIDATE_BEGINPASS_CANARY,
VALIDATE_BEGINPASS_ATTACHMENTS_EXISTS,
VALIDATE_BEGINPASS_ATTACHMENTS_VALID,
VALIDATE_BEGINPASS_COLOR_ATTACHMENT_IMAGE,
VALIDATE_BEGINPASS_RESOLVE_ATTACHMENT_IMAGE,
VALIDATE_BEGINPASS_DEPTHSTENCIL_ATTACHMENT_IMAGE,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_WIDTH,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_WIDTH_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_HEIGHT,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_HEIGHT_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_SAMPLECOUNT,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_SAMPLECOUNT_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_COLORFORMAT,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_COLORFORMAT_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_EXPECT_DEPTHFORMAT_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_CURRENTDRAWABLE,
VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_CURRENTDRAWABLE_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_DEPTHSTENCILTEXTURE,
VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_DEPTHSTENCILTEXTURE_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_MSAACOLORTEXTURE,
VALIDATE_BEGINPASS_SWAPCHAIN_METAL_EXPECT_MSAACOLORTEXTURE_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RENDERVIEW,
VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RENDERVIEW_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RESOLVEVIEW,
VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_RESOLVEVIEW_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_DEPTHSTENCILVIEW,
VALIDATE_BEGINPASS_SWAPCHAIN_D3D11_EXPECT_DEPTHSTENCILVIEW_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RENDERVIEW,
VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RENDERVIEW_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RESOLVEVIEW,
VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_RESOLVEVIEW_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_DEPTHSTENCILVIEW,
VALIDATE_BEGINPASS_SWAPCHAIN_WGPU_EXPECT_DEPTHSTENCILVIEW_NOTSET,
VALIDATE_BEGINPASS_SWAPCHAIN_GL_EXPECT_FRAMEBUFFER_NOTSET,
VALIDATE_APIP_PIPELINE_VALID_ID,
VALIDATE_APIP_PIPELINE_EXISTS,
VALIDATE_APIP_PIPELINE_VALID,
VALIDATE_APIP_SHADER_EXISTS,
VALIDATE_APIP_SHADER_VALID,
VALIDATE_APIP_CURPASS_ATTACHMENTS_EXISTS,
VALIDATE_APIP_CURPASS_ATTACHMENTS_VALID,
VALIDATE_APIP_ATT_COUNT,
VALIDATE_APIP_COLOR_FORMAT,
VALIDATE_APIP_DEPTH_FORMAT,
VALIDATE_APIP_SAMPLE_COUNT,
VALIDATE_ABND_PIPELINE,
VALIDATE_ABND_PIPELINE_EXISTS,
VALIDATE_ABND_PIPELINE_VALID,
VALIDATE_ABND_EXPECTED_VB,
VALIDATE_ABND_VB_EXISTS,
VALIDATE_ABND_VB_TYPE,
VALIDATE_ABND_VB_OVERFLOW,
VALIDATE_ABND_NO_IB,
VALIDATE_ABND_IB,
VALIDATE_ABND_IB_EXISTS,
VALIDATE_ABND_IB_TYPE,
VALIDATE_ABND_IB_OVERFLOW,
VALIDATE_ABND_EXPECTED_IMAGE_BINDING,
VALIDATE_ABND_IMG_EXISTS,
VALIDATE_ABND_IMAGE_TYPE_MISMATCH,
VALIDATE_ABND_EXPECTED_MULTISAMPLED_IMAGE,
VALIDATE_ABND_IMAGE_MSAA,
VALIDATE_ABND_EXPECTED_FILTERABLE_IMAGE,
VALIDATE_ABND_EXPECTED_DEPTH_IMAGE,
VALIDATE_ABND_EXPECTED_SAMPLER_BINDING,
VALIDATE_ABND_UNEXPECTED_SAMPLER_COMPARE_NEVER,
VALIDATE_ABND_EXPECTED_SAMPLER_COMPARE_NEVER,
VALIDATE_ABND_EXPECTED_NONFILTERING_SAMPLER,
VALIDATE_ABND_SMP_EXISTS,
VALIDATE_ABND_EXPECTED_STORAGEBUFFER_BINDING,
VALIDATE_ABND_STORAGEBUFFER_EXISTS,
VALIDATE_ABND_STORAGEBUFFER_BINDING_BUFFERTYPE,
VALIDATE_AUB_NO_PIPELINE,
VALIDATE_AUB_NO_UB_AT_SLOT,
VALIDATE_AUB_SIZE,
VALIDATE_UPDATEBUF_USAGE,
VALIDATE_UPDATEBUF_SIZE,
VALIDATE_UPDATEBUF_ONCE,
VALIDATE_UPDATEBUF_APPEND,
VALIDATE_APPENDBUF_USAGE,
VALIDATE_APPENDBUF_SIZE,
VALIDATE_APPENDBUF_UPDATE,
VALIDATE_UPDIMG_USAGE,
VALIDATE_UPDIMG_ONCE,
VALIDATION_FAILED,
}
Environment_Defaults :: struct {
color_format : Pixel_Format,
depth_format : Pixel_Format,
sample_count : c.int,
}
Metal_Environment :: struct {
device : rawptr,
}
D3d11_Environment :: struct {
device : rawptr,
device_context : rawptr,
}
Wgpu_Environment :: struct {
device : rawptr,
}
Environment :: struct {
defaults : Environment_Defaults,
metal : Metal_Environment,
d3d11 : D3d11_Environment,
wgpu : Wgpu_Environment,
}
Commit_Listener :: struct {
func : proc "c" (a0: rawptr),
user_data : rawptr,
}
Allocator :: struct {
alloc_fn : proc "c" (a0: c.size_t, a1: rawptr) -> rawptr,
free_fn : proc "c" (a0: rawptr, a1: rawptr),
user_data : rawptr,
}
Logger :: struct {
func : proc "c" (a0: cstring, a1: u32, a2: u32, a3: cstring, a4: u32, a5: cstring, a6: rawptr),
user_data : rawptr,
}
Desc :: struct {
_ : u32,
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,
attachments_pool_size : c.int,
uniform_buffer_size : c.int,
max_commit_listeners : c.int,
disable_validation : bool,
d3d11_shader_debugging : bool,
mtl_force_managed_storage_mode : bool,
mtl_use_command_buffer_with_retained_references : bool,
wgpu_disable_bindgroups_cache : bool,
wgpu_bindgroups_cache_size : c.int,
allocator : Allocator,
logger : Logger,
environment : Environment,
_ : u32,
}
D3d11_Buffer_Info :: struct {
buf : rawptr,
}
D3d11_Image_Info :: struct {
tex2d : rawptr,
tex3d : rawptr,
res : rawptr,
srv : rawptr,
}
D3d11_Sampler_Info :: struct {
smp : rawptr,
}
D3d11_Shader_Info :: struct {
cbufs : [8]rawptr,
vs : rawptr,
fs : rawptr,
}
D3d11_Pipeline_Info :: struct {
il : rawptr,
rs : rawptr,
dss : rawptr,
bs : rawptr,
}
D3d11_Attachments_Info :: struct {
color_rtv : [4]rawptr,
resolve_rtv : [4]rawptr,
dsv : rawptr,
}
Mtl_Buffer_Info :: struct {
buf : [2]rawptr,
active_slot : c.int,
}
Mtl_Image_Info :: struct {
tex : [2]rawptr,
active_slot : c.int,
}
Mtl_Sampler_Info :: struct {
smp : rawptr,
}
Mtl_Shader_Info :: struct {
vertex_lib : rawptr,
fragment_lib : rawptr,
vertex_func : rawptr,
fragment_func : rawptr,
}
Mtl_Pipeline_Info :: struct {
rps : rawptr,
dss : rawptr,
}
Wgpu_Buffer_Info :: struct {
buf : rawptr,
}
Wgpu_Image_Info :: struct {
tex : rawptr,
view : rawptr,
}
Wgpu_Sampler_Info :: struct {
smp : rawptr,
}
Wgpu_Shader_Info :: struct {
vs_mod : rawptr,
fs_mod : rawptr,
bgl : rawptr,
}
Wgpu_Pipeline_Info :: struct {
pip : rawptr,
}
Wgpu_Attachments_Info :: struct {
color_view : [4]rawptr,
resolve_view : [4]rawptr,
ds_view : rawptr,
}
Gl_Buffer_Info :: struct {
buf : [2]u32,
active_slot : c.int,
}
Gl_Image_Info :: struct {
tex : [2]u32,
tex_target : u32,
msaa_render_buffer : u32,
active_slot : c.int,
}
Gl_Sampler_Info :: struct {
smp : u32,
}
Gl_Shader_Info :: struct {
prog : u32,
}
Gl_Attachments_Info :: struct {
framebuffer : u32,
msaa_resolve_framebuffer : [4]u32,
}