1599 lines
45 KiB
Odin
1599 lines
45 KiB
Odin
|
// 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,
|
||
|
}
|
||
|
|