Skip to content

Instantly share code, notes, and snippets.

@harold-b
Created May 21, 2024 18:50
Show Gist options
  • Save harold-b/a9d3ecbf37a91df2d48d2c508f670d56 to your computer and use it in GitHub Desktop.
Save harold-b/a9d3ecbf37a91df2d48d2c508f670d56 to your computer and use it in GitHub Desktop.
Odin bindings for bgfx
package bgfx
import "base:intrinsics"
import "base:runtime"
import cffi "core:c"
when ODIN_OS == .Linux {
@require foreign import bgfx {
"libs/windows/bgfx.a",
}
}
when ODIN_OS == .Windows {
@require foreign import bgfx {
"libs/windows/bgfx.lib",
}
}
when ODIN_OS == .Darwin {
@require foreign import bgfx {
"libs/macos/bgfx.a",
}
}
@(default_calling_convention="c")
foreign bgfx {
@(link_name="bgfx_attachment_init")
attachment_init :: proc(_this: ^attachment_s, _handle: texture_handle_s, _access: access_t, _layer: cffi.uint16_t, _numLayers: cffi.uint16_t, _mip: cffi.uint16_t, _resolve: cffi.uint8_t) ---
@(require_results)
@(link_name="bgfx_vertex_layout_begin")
vertex_layout_begin :: proc(_this: ^vertex_layout_s, _rendererType: renderer_type_t) -> ^vertex_layout_s ---
@(require_results)
@(link_name="bgfx_vertex_layout_add")
vertex_layout_add :: proc(_this: ^vertex_layout_s, _attrib: attrib_t, _num: cffi.uint8_t, _type: attrib_type_t, _normalized: cffi.bool, _asInt: cffi.bool) -> ^vertex_layout_s ---
@(link_name="bgfx_vertex_layout_decode")
vertex_layout_decode :: proc(_this: ^vertex_layout_s, _attrib: attrib_t, _num: ^cffi.uchar, _type: ^attrib_type_t, _normalized: ^cffi.bool, _asInt: ^cffi.bool) ---
@(link_name="bgfx_vertex_layout_has")
vertex_layout_has :: proc(_this: ^vertex_layout_s, _attrib: attrib_t) -> cffi.bool ---
@(require_results)
@(link_name="bgfx_vertex_layout_skip")
vertex_layout_skip :: proc(_this: ^vertex_layout_s, _num: cffi.uint8_t) -> ^vertex_layout_s ---
@(link_name="bgfx_vertex_layout_end")
vertex_layout_end :: proc(_this: ^vertex_layout_s) ---
@(link_name="bgfx_vertex_pack")
vertex_pack :: proc(_input: [4]cffi.float, _inputNormalized: cffi.bool, _attr: attrib_t, _layout: ^vertex_layout_s, _data: rawptr, _index: cffi.uint32_t) ---
@(link_name="bgfx_vertex_unpack")
vertex_unpack :: proc(_output: [4]cffi.float, _attr: attrib_t, _layout: ^vertex_layout_s, _data: rawptr, _index: cffi.uint32_t) ---
@(link_name="bgfx_vertex_convert")
vertex_convert :: proc(_dstLayout: ^vertex_layout_s, _dstData: rawptr, _srcLayout: ^vertex_layout_s, _srcData: rawptr, _num: cffi.uint32_t) ---
@(link_name="bgfx_weld_vertices")
weld_vertices :: proc(_output: rawptr, _layout: ^vertex_layout_s, _data: rawptr, _num: cffi.uint32_t, _index32: cffi.bool, _epsilon: cffi.float) -> cffi.uint ---
@(link_name="bgfx_topology_convert")
topology_convert :: proc(_conversion: topology_convert_t, _dst: rawptr, _dstSize: cffi.uint32_t, _indices: rawptr, _numIndices: cffi.uint32_t, _index32: cffi.bool) -> cffi.uint ---
@(link_name="bgfx_topology_sort_tri_list")
topology_sort_tri_list :: proc(_sort: topology_sort_t, _dst: rawptr, _dstSize: cffi.uint32_t, _dir: [3]cffi.float, _pos: [3]cffi.float, _vertices: rawptr, _stride: cffi.uint32_t, _indices: rawptr, _numIndices: cffi.uint32_t, _index32: cffi.bool) ---
@(link_name="bgfx_get_supported_renderers")
get_supported_renderers :: proc(_max: cffi.uint8_t, _enum: ^renderer_type_t) -> cffi.uchar ---
@(require_results)
@(link_name="bgfx_get_renderer_name")
get_renderer_name :: proc(_type: renderer_type_t) -> cstring ---
@(link_name="bgfx_init_ctor")
init_ctor :: proc(_init: ^init_s) ---
@(link_name="bgfx_init")
init :: proc(_init: ^init_s) -> cffi.bool ---
@(link_name="bgfx_shutdown")
shutdown :: proc() ---
@(link_name="bgfx_reset")
reset :: proc(_width: cffi.uint32_t, _height: cffi.uint32_t, _flags: cffi.uint32_t, _format: texture_format_t) ---
@(link_name="bgfx_frame")
frame :: proc(_capture: cffi.bool) -> cffi.uint ---
@(link_name="bgfx_get_renderer_type")
get_renderer_type :: proc() -> renderer_type_t ---
@(require_results)
@(link_name="bgfx_get_caps")
get_caps :: proc() -> ^caps_s ---
@(require_results)
@(link_name="bgfx_get_stats")
get_stats :: proc() -> ^stats_s ---
@(require_results)
@(link_name="bgfx_alloc")
alloc :: proc(_size: cffi.uint32_t) -> ^memory_s ---
@(require_results)
@(link_name="bgfx_copy")
copy :: proc(_data: rawptr, _size: cffi.uint32_t) -> ^memory_s ---
@(require_results)
@(link_name="bgfx_make_ref")
make_ref :: proc(_data: rawptr, _size: cffi.uint32_t) -> ^memory_s ---
@(require_results)
@(link_name="bgfx_make_ref_release")
make_ref_release :: proc(_data: rawptr, _size: cffi.uint32_t, _releaseFn: release_fn_t, _userData: rawptr) -> ^memory_s ---
@(link_name="bgfx_set_debug")
set_debug :: proc(_debug: cffi.uint32_t) ---
@(link_name="bgfx_dbg_text_clear")
dbg_text_clear :: proc(_attr: cffi.uint8_t, _small: cffi.bool) ---
@(link_name="bgfx_dbg_text_printf")
dbg_text_printf :: proc(_x: cffi.uint16_t, _y: cffi.uint16_t, _attr: cffi.uint8_t, _format: cstring, #c_vararg args: ..any) ---
@(link_name="bgfx_dbg_text_vprintf")
dbg_text_vprintf :: proc(_x: cffi.uint16_t, _y: cffi.uint16_t, _attr: cffi.uint8_t, _format: cstring, _argList: cffi.va_list) ---
@(link_name="bgfx_dbg_text_image")
dbg_text_image :: proc(_x: cffi.uint16_t, _y: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t, _data: rawptr, _pitch: cffi.uint16_t) ---
@(link_name="bgfx_create_index_buffer")
create_index_buffer :: proc(_mem: ^memory_s, _flags: cffi.uint16_t) -> index_buffer_handle_s ---
@(link_name="bgfx_set_index_buffer_name")
set_index_buffer_name :: proc(_handle: index_buffer_handle_s, _name: cstring, _len: cffi.int32_t) ---
@(link_name="bgfx_destroy_index_buffer")
destroy_index_buffer :: proc(_handle: index_buffer_handle_s) ---
@(link_name="bgfx_create_vertex_layout")
create_vertex_layout :: proc(_layout: ^vertex_layout_s) -> vertex_layout_handle_s ---
@(link_name="bgfx_destroy_vertex_layout")
destroy_vertex_layout :: proc(_layoutHandle: vertex_layout_handle_s) ---
@(link_name="bgfx_create_vertex_buffer")
create_vertex_buffer :: proc(_mem: ^memory_s, _layout: ^vertex_layout_s, _flags: cffi.uint16_t) -> vertex_buffer_handle_s ---
@(link_name="bgfx_set_vertex_buffer_name")
set_vertex_buffer_name :: proc(_handle: vertex_buffer_handle_s, _name: cstring, _len: cffi.int32_t) ---
@(link_name="bgfx_destroy_vertex_buffer")
destroy_vertex_buffer :: proc(_handle: vertex_buffer_handle_s) ---
@(link_name="bgfx_create_dynamic_index_buffer")
create_dynamic_index_buffer :: proc(_num: cffi.uint32_t, _flags: cffi.uint16_t) -> dynamic_index_buffer_handle_s ---
@(link_name="bgfx_create_dynamic_index_buffer_mem")
create_dynamic_index_buffer_mem :: proc(_mem: ^memory_s, _flags: cffi.uint16_t) -> dynamic_index_buffer_handle_s ---
@(link_name="bgfx_update_dynamic_index_buffer")
update_dynamic_index_buffer :: proc(_handle: dynamic_index_buffer_handle_s, _startIndex: cffi.uint32_t, _mem: ^memory_s) ---
@(link_name="bgfx_destroy_dynamic_index_buffer")
destroy_dynamic_index_buffer :: proc(_handle: dynamic_index_buffer_handle_s) ---
@(link_name="bgfx_create_dynamic_vertex_buffer")
create_dynamic_vertex_buffer :: proc(_num: cffi.uint32_t, _layout: ^vertex_layout_s, _flags: cffi.uint16_t) -> dynamic_vertex_buffer_handle_s ---
@(link_name="bgfx_create_dynamic_vertex_buffer_mem")
create_dynamic_vertex_buffer_mem :: proc(_mem: ^memory_s, _layout: ^vertex_layout_s, _flags: cffi.uint16_t) -> dynamic_vertex_buffer_handle_s ---
@(link_name="bgfx_update_dynamic_vertex_buffer")
update_dynamic_vertex_buffer :: proc(_handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _mem: ^memory_s) ---
@(link_name="bgfx_destroy_dynamic_vertex_buffer")
destroy_dynamic_vertex_buffer :: proc(_handle: dynamic_vertex_buffer_handle_s) ---
@(link_name="bgfx_get_avail_transient_index_buffer")
get_avail_transient_index_buffer :: proc(_num: cffi.uint32_t, _index32: cffi.bool) -> cffi.uint ---
@(link_name="bgfx_get_avail_transient_vertex_buffer")
get_avail_transient_vertex_buffer :: proc(_num: cffi.uint32_t, _layout: ^vertex_layout_s) -> cffi.uint ---
@(link_name="bgfx_get_avail_instance_data_buffer")
get_avail_instance_data_buffer :: proc(_num: cffi.uint32_t, _stride: cffi.uint16_t) -> cffi.uint ---
@(link_name="bgfx_alloc_transient_index_buffer")
alloc_transient_index_buffer :: proc(_tib: ^transient_index_buffer_s, _num: cffi.uint32_t, _index32: cffi.bool) ---
@(link_name="bgfx_alloc_transient_vertex_buffer")
alloc_transient_vertex_buffer :: proc(_tvb: ^transient_vertex_buffer_s, _num: cffi.uint32_t, _layout: ^vertex_layout_s) ---
@(link_name="bgfx_alloc_transient_buffers")
alloc_transient_buffers :: proc(_tvb: ^transient_vertex_buffer_s, _layout: ^vertex_layout_s, _numVertices: cffi.uint32_t, _tib: ^transient_index_buffer_s, _numIndices: cffi.uint32_t, _index32: cffi.bool) -> cffi.bool ---
@(link_name="bgfx_alloc_instance_data_buffer")
alloc_instance_data_buffer :: proc(_idb: ^instance_data_buffer_s, _num: cffi.uint32_t, _stride: cffi.uint16_t) ---
@(link_name="bgfx_create_indirect_buffer")
create_indirect_buffer :: proc(_num: cffi.uint32_t) -> indirect_buffer_handle_s ---
@(link_name="bgfx_destroy_indirect_buffer")
destroy_indirect_buffer :: proc(_handle: indirect_buffer_handle_s) ---
@(link_name="bgfx_create_shader")
create_shader :: proc(_mem: ^memory_s) -> shader_handle_s ---
@(link_name="bgfx_get_shader_uniforms")
get_shader_uniforms :: proc(_handle: shader_handle_s, _uniforms: ^uniform_handle_s, _max: cffi.uint16_t) -> cffi.ushort ---
@(link_name="bgfx_set_shader_name")
set_shader_name :: proc(_handle: shader_handle_s, _name: cstring, _len: cffi.int32_t) ---
@(link_name="bgfx_destroy_shader")
destroy_shader :: proc(_handle: shader_handle_s) ---
@(link_name="bgfx_create_program")
create_program :: proc(_vsh: shader_handle_s, _fsh: shader_handle_s, _destroyShaders: cffi.bool) -> program_handle_s ---
@(link_name="bgfx_create_compute_program")
create_compute_program :: proc(_csh: shader_handle_s, _destroyShaders: cffi.bool) -> program_handle_s ---
@(link_name="bgfx_destroy_program")
destroy_program :: proc(_handle: program_handle_s) ---
@(link_name="bgfx_is_texture_valid")
is_texture_valid :: proc(_depth: cffi.uint16_t, _cubeMap: cffi.bool, _numLayers: cffi.uint16_t, _format: texture_format_t, _flags: cffi.uint64_t) -> cffi.bool ---
@(link_name="bgfx_is_frame_buffer_valid")
is_frame_buffer_valid :: proc(_num: cffi.uint8_t, _attachment: ^attachment_s) -> cffi.bool ---
@(link_name="bgfx_calc_texture_size")
calc_texture_size :: proc(_info: ^texture_info_s, _width: cffi.uint16_t, _height: cffi.uint16_t, _depth: cffi.uint16_t, _cubeMap: cffi.bool, _hasMips: cffi.bool, _numLayers: cffi.uint16_t, _format: texture_format_t) ---
@(link_name="bgfx_create_texture")
create_texture :: proc(_mem: ^memory_s, _flags: cffi.uint64_t, _skip: cffi.uint8_t, _info: ^texture_info_s) -> texture_handle_s ---
@(link_name="bgfx_create_texture_2d")
create_texture_2d :: proc(_width: cffi.uint16_t, _height: cffi.uint16_t, _hasMips: cffi.bool, _numLayers: cffi.uint16_t, _format: texture_format_t, _flags: cffi.uint64_t, _mem: ^memory_s) -> texture_handle_s ---
@(link_name="bgfx_create_texture_2d_scaled")
create_texture_2d_scaled :: proc(_ratio: backbuffer_ratio_t, _hasMips: cffi.bool, _numLayers: cffi.uint16_t, _format: texture_format_t, _flags: cffi.uint64_t) -> texture_handle_s ---
@(link_name="bgfx_create_texture_3d")
create_texture_3d :: proc(_width: cffi.uint16_t, _height: cffi.uint16_t, _depth: cffi.uint16_t, _hasMips: cffi.bool, _format: texture_format_t, _flags: cffi.uint64_t, _mem: ^memory_s) -> texture_handle_s ---
@(link_name="bgfx_create_texture_cube")
create_texture_cube :: proc(_size: cffi.uint16_t, _hasMips: cffi.bool, _numLayers: cffi.uint16_t, _format: texture_format_t, _flags: cffi.uint64_t, _mem: ^memory_s) -> texture_handle_s ---
@(link_name="bgfx_update_texture_2d")
update_texture_2d :: proc(_handle: texture_handle_s, _layer: cffi.uint16_t, _mip: cffi.uint8_t, _x: cffi.uint16_t, _y: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t, _mem: ^memory_s, _pitch: cffi.uint16_t) ---
@(link_name="bgfx_update_texture_3d")
update_texture_3d :: proc(_handle: texture_handle_s, _mip: cffi.uint8_t, _x: cffi.uint16_t, _y: cffi.uint16_t, _z: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t, _depth: cffi.uint16_t, _mem: ^memory_s) ---
@(link_name="bgfx_update_texture_cube")
update_texture_cube :: proc(_handle: texture_handle_s, _layer: cffi.uint16_t, _side: cffi.uint8_t, _mip: cffi.uint8_t, _x: cffi.uint16_t, _y: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t, _mem: ^memory_s, _pitch: cffi.uint16_t) ---
@(link_name="bgfx_read_texture")
read_texture :: proc(_handle: texture_handle_s, _data: rawptr, _mip: cffi.uint8_t) -> cffi.uint ---
@(link_name="bgfx_set_texture_name")
set_texture_name :: proc(_handle: texture_handle_s, _name: cstring, _len: cffi.int32_t) ---
@(require_results)
@(link_name="bgfx_get_direct_access_ptr")
get_direct_access_ptr :: proc(_handle: texture_handle_s) -> rawptr ---
@(link_name="bgfx_destroy_texture")
destroy_texture :: proc(_handle: texture_handle_s) ---
@(link_name="bgfx_create_frame_buffer")
create_frame_buffer :: proc(_width: cffi.uint16_t, _height: cffi.uint16_t, _format: texture_format_t, _textureFlags: cffi.uint64_t) -> frame_buffer_handle_s ---
@(link_name="bgfx_create_frame_buffer_scaled")
create_frame_buffer_scaled :: proc(_ratio: backbuffer_ratio_t, _format: texture_format_t, _textureFlags: cffi.uint64_t) -> frame_buffer_handle_s ---
@(link_name="bgfx_create_frame_buffer_from_handles")
create_frame_buffer_from_handles :: proc(_num: cffi.uint8_t, _handles: ^texture_handle_s, _destroyTexture: cffi.bool) -> frame_buffer_handle_s ---
@(link_name="bgfx_create_frame_buffer_from_attachment")
create_frame_buffer_from_attachment :: proc(_num: cffi.uint8_t, _attachment: ^attachment_s, _destroyTexture: cffi.bool) -> frame_buffer_handle_s ---
@(link_name="bgfx_create_frame_buffer_from_nwh")
create_frame_buffer_from_nwh :: proc(_nwh: rawptr, _width: cffi.uint16_t, _height: cffi.uint16_t, _format: texture_format_t, _depthFormat: texture_format_t) -> frame_buffer_handle_s ---
@(link_name="bgfx_set_frame_buffer_name")
set_frame_buffer_name :: proc(_handle: frame_buffer_handle_s, _name: cstring, _len: cffi.int32_t) ---
@(link_name="bgfx_get_texture")
get_texture :: proc(_handle: frame_buffer_handle_s, _attachment: cffi.uint8_t) -> texture_handle_s ---
@(link_name="bgfx_destroy_frame_buffer")
destroy_frame_buffer :: proc(_handle: frame_buffer_handle_s) ---
@(link_name="bgfx_create_uniform")
create_uniform :: proc(_name: cstring, _type: uniform_type_t, _num: cffi.uint16_t) -> uniform_handle_s ---
@(link_name="bgfx_get_uniform_info")
get_uniform_info :: proc(_handle: uniform_handle_s, _info: ^uniform_info_s) ---
@(link_name="bgfx_destroy_uniform")
destroy_uniform :: proc(_handle: uniform_handle_s) ---
@(link_name="bgfx_create_occlusion_query")
create_occlusion_query :: proc() -> occlusion_query_handle_s ---
@(link_name="bgfx_get_result")
get_result :: proc(_handle: occlusion_query_handle_s, _result: ^cffi.int) -> occlusion_query_result_t ---
@(link_name="bgfx_destroy_occlusion_query")
destroy_occlusion_query :: proc(_handle: occlusion_query_handle_s) ---
@(link_name="bgfx_set_palette_color")
set_palette_color :: proc(_index: cffi.uint8_t, _rgba: [4]cffi.float) ---
@(link_name="bgfx_set_palette_color_rgba8")
set_palette_color_rgba8 :: proc(_index: cffi.uint8_t, _rgba: cffi.uint32_t) ---
@(link_name="bgfx_set_view_name")
set_view_name :: proc(_id: view_id_t, _name: cstring, _len: cffi.int32_t) ---
@(link_name="bgfx_set_view_rect")
set_view_rect :: proc(_id: view_id_t, _x: cffi.uint16_t, _y: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t) ---
@(link_name="bgfx_set_view_rect_ratio")
set_view_rect_ratio :: proc(_id: view_id_t, _x: cffi.uint16_t, _y: cffi.uint16_t, _ratio: backbuffer_ratio_t) ---
@(link_name="bgfx_set_view_scissor")
set_view_scissor :: proc(_id: view_id_t, _x: cffi.uint16_t, _y: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t) ---
@(link_name="bgfx_set_view_clear")
set_view_clear :: proc(_id: view_id_t, _flags: cffi.uint16_t, _rgba: cffi.uint32_t, _depth: cffi.float, _stencil: cffi.uint8_t) ---
@(link_name="bgfx_set_view_clear_mrt")
set_view_clear_mrt :: proc(_id: view_id_t, _flags: cffi.uint16_t, _depth: cffi.float, _stencil: cffi.uint8_t, _c0: cffi.uint8_t, _c1: cffi.uint8_t, _c2: cffi.uint8_t, _c3: cffi.uint8_t, _c4: cffi.uint8_t, _c5: cffi.uint8_t, _c6: cffi.uint8_t, _c7: cffi.uint8_t) ---
@(link_name="bgfx_set_view_mode")
set_view_mode :: proc(_id: view_id_t, _mode: view_mode_t) ---
@(link_name="bgfx_set_view_frame_buffer")
set_view_frame_buffer :: proc(_id: view_id_t, _handle: frame_buffer_handle_s) ---
@(link_name="bgfx_set_view_transform")
set_view_transform :: proc(_id: view_id_t, _view: rawptr, _proj: rawptr) ---
@(link_name="bgfx_set_view_order")
set_view_order :: proc(_id: view_id_t, _num: cffi.uint16_t, _order: ^cffi.ushort) ---
@(link_name="bgfx_reset_view")
reset_view :: proc(_id: view_id_t) ---
@(require_results)
@(link_name="bgfx_encoder_begin")
encoder_begin :: proc(_forThread: cffi.bool) -> ^encoder_s ---
@(link_name="bgfx_encoder_end")
encoder_end :: proc(_encoder: ^encoder_s) ---
@(link_name="bgfx_encoder_set_marker")
encoder_set_marker :: proc(_this: ^encoder_s, _name: cstring, _len: cffi.int32_t) ---
@(link_name="bgfx_encoder_set_state")
encoder_set_state :: proc(_this: ^encoder_s, _state: cffi.uint64_t, _rgba: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_condition")
encoder_set_condition :: proc(_this: ^encoder_s, _handle: occlusion_query_handle_s, _visible: cffi.bool) ---
@(link_name="bgfx_encoder_set_stencil")
encoder_set_stencil :: proc(_this: ^encoder_s, _fstencil: cffi.uint32_t, _bstencil: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_scissor")
encoder_set_scissor :: proc(_this: ^encoder_s, _x: cffi.uint16_t, _y: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t) -> cffi.ushort ---
@(link_name="bgfx_encoder_set_scissor_cached")
encoder_set_scissor_cached :: proc(_this: ^encoder_s, _cache: cffi.uint16_t) ---
@(link_name="bgfx_encoder_set_transform")
encoder_set_transform :: proc(_this: ^encoder_s, _mtx: rawptr, _num: cffi.uint16_t) -> cffi.uint ---
@(link_name="bgfx_encoder_set_transform_cached")
encoder_set_transform_cached :: proc(_this: ^encoder_s, _cache: cffi.uint32_t, _num: cffi.uint16_t) ---
@(link_name="bgfx_encoder_alloc_transform")
encoder_alloc_transform :: proc(_this: ^encoder_s, _transform: ^transform_s, _num: cffi.uint16_t) -> cffi.uint ---
@(link_name="bgfx_encoder_set_uniform")
encoder_set_uniform :: proc(_this: ^encoder_s, _handle: uniform_handle_s, _value: rawptr, _num: cffi.uint16_t) ---
@(link_name="bgfx_encoder_set_index_buffer")
encoder_set_index_buffer :: proc(_this: ^encoder_s, _handle: index_buffer_handle_s, _firstIndex: cffi.uint32_t, _numIndices: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_dynamic_index_buffer")
encoder_set_dynamic_index_buffer :: proc(_this: ^encoder_s, _handle: dynamic_index_buffer_handle_s, _firstIndex: cffi.uint32_t, _numIndices: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_transient_index_buffer")
encoder_set_transient_index_buffer :: proc(_this: ^encoder_s, _tib: ^transient_index_buffer_s, _firstIndex: cffi.uint32_t, _numIndices: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_vertex_buffer")
encoder_set_vertex_buffer :: proc(_this: ^encoder_s, _stream: cffi.uint8_t, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_vertex_buffer_with_layout")
encoder_set_vertex_buffer_with_layout :: proc(_this: ^encoder_s, _stream: cffi.uint8_t, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t, _layoutHandle: vertex_layout_handle_s) ---
@(link_name="bgfx_encoder_set_dynamic_vertex_buffer")
encoder_set_dynamic_vertex_buffer :: proc(_this: ^encoder_s, _stream: cffi.uint8_t, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_dynamic_vertex_buffer_with_layout")
encoder_set_dynamic_vertex_buffer_with_layout :: proc(_this: ^encoder_s, _stream: cffi.uint8_t, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t, _layoutHandle: vertex_layout_handle_s) ---
@(link_name="bgfx_encoder_set_transient_vertex_buffer")
encoder_set_transient_vertex_buffer :: proc(_this: ^encoder_s, _stream: cffi.uint8_t, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_transient_vertex_buffer_with_layout")
encoder_set_transient_vertex_buffer_with_layout :: proc(_this: ^encoder_s, _stream: cffi.uint8_t, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t, _layoutHandle: vertex_layout_handle_s) ---
@(link_name="bgfx_encoder_set_vertex_count")
encoder_set_vertex_count :: proc(_this: ^encoder_s, _numVertices: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_instance_data_buffer")
encoder_set_instance_data_buffer :: proc(_this: ^encoder_s, _idb: ^instance_data_buffer_s, _start: cffi.uint32_t, _num: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_instance_data_from_vertex_buffer")
encoder_set_instance_data_from_vertex_buffer :: proc(_this: ^encoder_s, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _num: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_instance_data_from_dynamic_vertex_buffer")
encoder_set_instance_data_from_dynamic_vertex_buffer :: proc(_this: ^encoder_s, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _num: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_instance_count")
encoder_set_instance_count :: proc(_this: ^encoder_s, _numInstances: cffi.uint32_t) ---
@(link_name="bgfx_encoder_set_texture")
encoder_set_texture :: proc(_this: ^encoder_s, _stage: cffi.uint8_t, _sampler: uniform_handle_s, _handle: texture_handle_s, _flags: cffi.uint32_t) ---
@(link_name="bgfx_encoder_touch")
encoder_touch :: proc(_this: ^encoder_s, _id: view_id_t) ---
@(link_name="bgfx_encoder_submit")
encoder_submit :: proc(_this: ^encoder_s, _id: view_id_t, _program: program_handle_s, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_encoder_submit_occlusion_query")
encoder_submit_occlusion_query :: proc(_this: ^encoder_s, _id: view_id_t, _program: program_handle_s, _occlusionQuery: occlusion_query_handle_s, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_encoder_submit_indirect")
encoder_submit_indirect :: proc(_this: ^encoder_s, _id: view_id_t, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint32_t, _num: cffi.uint32_t, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_encoder_submit_indirect_count")
encoder_submit_indirect_count :: proc(_this: ^encoder_s, _id: view_id_t, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint32_t, _numHandle: index_buffer_handle_s, _numIndex: cffi.uint32_t, _numMax: cffi.uint32_t, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_encoder_set_compute_index_buffer")
encoder_set_compute_index_buffer :: proc(_this: ^encoder_s, _stage: cffi.uint8_t, _handle: index_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_encoder_set_compute_vertex_buffer")
encoder_set_compute_vertex_buffer :: proc(_this: ^encoder_s, _stage: cffi.uint8_t, _handle: vertex_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_encoder_set_compute_dynamic_index_buffer")
encoder_set_compute_dynamic_index_buffer :: proc(_this: ^encoder_s, _stage: cffi.uint8_t, _handle: dynamic_index_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_encoder_set_compute_dynamic_vertex_buffer")
encoder_set_compute_dynamic_vertex_buffer :: proc(_this: ^encoder_s, _stage: cffi.uint8_t, _handle: dynamic_vertex_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_encoder_set_compute_indirect_buffer")
encoder_set_compute_indirect_buffer :: proc(_this: ^encoder_s, _stage: cffi.uint8_t, _handle: indirect_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_encoder_set_image")
encoder_set_image :: proc(_this: ^encoder_s, _stage: cffi.uint8_t, _handle: texture_handle_s, _mip: cffi.uint8_t, _access: access_t, _format: texture_format_t) ---
@(link_name="bgfx_encoder_dispatch")
encoder_dispatch :: proc(_this: ^encoder_s, _id: view_id_t, _program: program_handle_s, _numX: cffi.uint32_t, _numY: cffi.uint32_t, _numZ: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_encoder_dispatch_indirect")
encoder_dispatch_indirect :: proc(_this: ^encoder_s, _id: view_id_t, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint32_t, _num: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_encoder_discard")
encoder_discard :: proc(_this: ^encoder_s, _flags: cffi.uint8_t) ---
@(link_name="bgfx_encoder_blit")
encoder_blit :: proc(_this: ^encoder_s, _id: view_id_t, _dst: texture_handle_s, _dstMip: cffi.uint8_t, _dstX: cffi.uint16_t, _dstY: cffi.uint16_t, _dstZ: cffi.uint16_t, _src: texture_handle_s, _srcMip: cffi.uint8_t, _srcX: cffi.uint16_t, _srcY: cffi.uint16_t, _srcZ: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t, _depth: cffi.uint16_t) ---
@(link_name="bgfx_request_screen_shot")
request_screen_shot :: proc(_handle: frame_buffer_handle_s, _filePath: cstring) ---
@(link_name="bgfx_render_frame")
render_frame :: proc(_msecs: cffi.int32_t) -> render_frame_t ---
@(link_name="bgfx_set_platform_data")
set_platform_data :: proc(_data: ^platform_data_s) ---
@(require_results)
@(link_name="bgfx_get_internal_data")
get_internal_data :: proc() -> ^internal_data_s ---
@(link_name="bgfx_override_internal_texture_ptr")
override_internal_texture_ptr :: proc(_handle: texture_handle_s, _ptr: cffi.uintptr_t) -> cffi.ulong ---
@(link_name="bgfx_override_internal_texture")
override_internal_texture :: proc(_handle: texture_handle_s, _width: cffi.uint16_t, _height: cffi.uint16_t, _numMips: cffi.uint8_t, _format: texture_format_t, _flags: cffi.uint64_t) -> cffi.ulong ---
@(link_name="bgfx_set_marker")
set_marker :: proc(_name: cstring, _len: cffi.int32_t) ---
@(link_name="bgfx_set_state")
set_state :: proc(_state: cffi.uint64_t, _rgba: cffi.uint32_t) ---
@(link_name="bgfx_set_condition")
set_condition :: proc(_handle: occlusion_query_handle_s, _visible: cffi.bool) ---
@(link_name="bgfx_set_stencil")
set_stencil :: proc(_fstencil: cffi.uint32_t, _bstencil: cffi.uint32_t) ---
@(link_name="bgfx_set_scissor")
set_scissor :: proc(_x: cffi.uint16_t, _y: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t) -> cffi.ushort ---
@(link_name="bgfx_set_scissor_cached")
set_scissor_cached :: proc(_cache: cffi.uint16_t) ---
@(link_name="bgfx_set_transform")
set_transform :: proc(_mtx: rawptr, _num: cffi.uint16_t) -> cffi.uint ---
@(link_name="bgfx_set_transform_cached")
set_transform_cached :: proc(_cache: cffi.uint32_t, _num: cffi.uint16_t) ---
@(link_name="bgfx_alloc_transform")
alloc_transform :: proc(_transform: ^transform_s, _num: cffi.uint16_t) -> cffi.uint ---
@(link_name="bgfx_set_uniform")
set_uniform :: proc(_handle: uniform_handle_s, _value: rawptr, _num: cffi.uint16_t) ---
@(link_name="bgfx_set_index_buffer")
set_index_buffer :: proc(_handle: index_buffer_handle_s, _firstIndex: cffi.uint32_t, _numIndices: cffi.uint32_t) ---
@(link_name="bgfx_set_dynamic_index_buffer")
set_dynamic_index_buffer :: proc(_handle: dynamic_index_buffer_handle_s, _firstIndex: cffi.uint32_t, _numIndices: cffi.uint32_t) ---
@(link_name="bgfx_set_transient_index_buffer")
set_transient_index_buffer :: proc(_tib: ^transient_index_buffer_s, _firstIndex: cffi.uint32_t, _numIndices: cffi.uint32_t) ---
@(link_name="bgfx_set_vertex_buffer")
set_vertex_buffer :: proc(_stream: cffi.uint8_t, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t) ---
@(link_name="bgfx_set_vertex_buffer_with_layout")
set_vertex_buffer_with_layout :: proc(_stream: cffi.uint8_t, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t, _layoutHandle: vertex_layout_handle_s) ---
@(link_name="bgfx_set_dynamic_vertex_buffer")
set_dynamic_vertex_buffer :: proc(_stream: cffi.uint8_t, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t) ---
@(link_name="bgfx_set_dynamic_vertex_buffer_with_layout")
set_dynamic_vertex_buffer_with_layout :: proc(_stream: cffi.uint8_t, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t, _layoutHandle: vertex_layout_handle_s) ---
@(link_name="bgfx_set_transient_vertex_buffer")
set_transient_vertex_buffer :: proc(_stream: cffi.uint8_t, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t) ---
@(link_name="bgfx_set_transient_vertex_buffer_with_layout")
set_transient_vertex_buffer_with_layout :: proc(_stream: cffi.uint8_t, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint32_t, _numVertices: cffi.uint32_t, _layoutHandle: vertex_layout_handle_s) ---
@(link_name="bgfx_set_vertex_count")
set_vertex_count :: proc(_numVertices: cffi.uint32_t) ---
@(link_name="bgfx_set_instance_data_buffer")
set_instance_data_buffer :: proc(_idb: ^instance_data_buffer_s, _start: cffi.uint32_t, _num: cffi.uint32_t) ---
@(link_name="bgfx_set_instance_data_from_vertex_buffer")
set_instance_data_from_vertex_buffer :: proc(_handle: vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _num: cffi.uint32_t) ---
@(link_name="bgfx_set_instance_data_from_dynamic_vertex_buffer")
set_instance_data_from_dynamic_vertex_buffer :: proc(_handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint32_t, _num: cffi.uint32_t) ---
@(link_name="bgfx_set_instance_count")
set_instance_count :: proc(_numInstances: cffi.uint32_t) ---
@(link_name="bgfx_set_texture")
set_texture :: proc(_stage: cffi.uint8_t, _sampler: uniform_handle_s, _handle: texture_handle_s, _flags: cffi.uint32_t) ---
@(link_name="bgfx_touch")
touch :: proc(_id: view_id_t) ---
@(link_name="bgfx_submit")
submit :: proc(_id: view_id_t, _program: program_handle_s, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_submit_occlusion_query")
submit_occlusion_query :: proc(_id: view_id_t, _program: program_handle_s, _occlusionQuery: occlusion_query_handle_s, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_submit_indirect")
submit_indirect :: proc(_id: view_id_t, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint32_t, _num: cffi.uint32_t, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_submit_indirect_count")
submit_indirect_count :: proc(_id: view_id_t, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint32_t, _numHandle: index_buffer_handle_s, _numIndex: cffi.uint32_t, _numMax: cffi.uint32_t, _depth: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_set_compute_index_buffer")
set_compute_index_buffer :: proc(_stage: cffi.uint8_t, _handle: index_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_set_compute_vertex_buffer")
set_compute_vertex_buffer :: proc(_stage: cffi.uint8_t, _handle: vertex_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_set_compute_dynamic_index_buffer")
set_compute_dynamic_index_buffer :: proc(_stage: cffi.uint8_t, _handle: dynamic_index_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_set_compute_dynamic_vertex_buffer")
set_compute_dynamic_vertex_buffer :: proc(_stage: cffi.uint8_t, _handle: dynamic_vertex_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_set_compute_indirect_buffer")
set_compute_indirect_buffer :: proc(_stage: cffi.uint8_t, _handle: indirect_buffer_handle_s, _access: access_t) ---
@(link_name="bgfx_set_image")
set_image :: proc(_stage: cffi.uint8_t, _handle: texture_handle_s, _mip: cffi.uint8_t, _access: access_t, _format: texture_format_t) ---
@(link_name="bgfx_dispatch")
dispatch :: proc(_id: view_id_t, _program: program_handle_s, _numX: cffi.uint32_t, _numY: cffi.uint32_t, _numZ: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_dispatch_indirect")
dispatch_indirect :: proc(_id: view_id_t, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint32_t, _num: cffi.uint32_t, _flags: cffi.uint8_t) ---
@(link_name="bgfx_discard")
discard :: proc(_flags: cffi.uint8_t) ---
@(link_name="bgfx_blit")
blit :: proc(_id: view_id_t, _dst: texture_handle_s, _dstMip: cffi.uint8_t, _dstX: cffi.uint16_t, _dstY: cffi.uint16_t, _dstZ: cffi.uint16_t, _src: texture_handle_s, _srcMip: cffi.uint8_t, _srcX: cffi.uint16_t, _srcY: cffi.uint16_t, _srcZ: cffi.uint16_t, _width: cffi.uint16_t, _height: cffi.uint16_t, _depth: cffi.uint16_t) ---
@(require_results)
@(link_name="bgfx_get_interface")
get_interface :: proc(_version: cffi.uint32_t) -> ^interface_vtbl ---
}
/// bgfx_view_id_t
view_id_t :: distinct cffi.ushort
/// bgfx_allocator_interface_t
allocator_interface_t :: distinct allocator_interface_s
/// bgfx_allocator_vtbl_t
allocator_vtbl_t :: distinct allocator_vtbl_s
/// bgfx_interface_vtbl_t
interface_vtbl_t :: distinct interface_vtbl
/// bgfx_callback_interface_t
callback_interface_t :: distinct callback_interface_s
/// bgfx_callback_vtbl_t
callback_vtbl_t :: distinct callback_vtbl_s
/// bgfx_dynamic_index_buffer_handle_t
dynamic_index_buffer_handle_t :: distinct dynamic_index_buffer_handle_s
/// bgfx_dynamic_vertex_buffer_handle_t
dynamic_vertex_buffer_handle_t :: distinct dynamic_vertex_buffer_handle_s
/// bgfx_frame_buffer_handle_t
frame_buffer_handle_t :: distinct frame_buffer_handle_s
/// bgfx_index_buffer_handle_t
index_buffer_handle_t :: distinct index_buffer_handle_s
/// bgfx_indirect_buffer_handle_t
indirect_buffer_handle_t :: distinct indirect_buffer_handle_s
/// bgfx_occlusion_query_handle_t
occlusion_query_handle_t :: distinct occlusion_query_handle_s
/// bgfx_program_handle_t
program_handle_t :: distinct program_handle_s
/// bgfx_shader_handle_t
shader_handle_t :: distinct shader_handle_s
/// bgfx_texture_handle_t
texture_handle_t :: distinct texture_handle_s
/// bgfx_uniform_handle_t
uniform_handle_t :: distinct uniform_handle_s
/// bgfx_vertex_buffer_handle_t
vertex_buffer_handle_t :: distinct vertex_buffer_handle_s
/// bgfx_vertex_layout_handle_t
vertex_layout_handle_t :: distinct vertex_layout_handle_s
/// bgfx_release_fn_t
release_fn_t :: distinct proc "c" (_ptr: rawptr, _userData: rawptr)
/// bgfx_caps_gpu_t
caps_gpu_t :: distinct caps_gpu_s
/// bgfx_caps_limits_t
caps_limits_t :: distinct caps_limits_s
/// bgfx_caps_t
caps_t :: distinct caps_s
/// bgfx_internal_data_t
internal_data_t :: distinct internal_data_s
/// bgfx_platform_data_t
platform_data_t :: distinct platform_data_s
/// bgfx_resolution_t
resolution_t :: distinct resolution_s
/// bgfx_init_limits_t
init_limits_t :: distinct init_limits_s
/// bgfx_init_t
init_t :: distinct init_s
/// bgfx_memory_t
memory_t :: distinct memory_s
/// bgfx_transient_index_buffer_t
transient_index_buffer_t :: distinct transient_index_buffer_s
/// bgfx_transient_vertex_buffer_t
transient_vertex_buffer_t :: distinct transient_vertex_buffer_s
/// bgfx_instance_data_buffer_t
instance_data_buffer_t :: distinct instance_data_buffer_s
/// bgfx_texture_info_t
texture_info_t :: distinct texture_info_s
/// bgfx_uniform_info_t
uniform_info_t :: distinct uniform_info_s
/// bgfx_attachment_t
attachment_t :: distinct attachment_s
/// bgfx_transform_t
transform_t :: distinct transform_s
/// bgfx_view_stats_t
view_stats_t :: distinct view_stats_s
/// bgfx_encoder_stats_t
encoder_stats_t :: distinct encoder_stats_s
/// bgfx_stats_t
stats_t :: distinct stats_s
/// bgfx_vertex_layout_t
vertex_layout_t :: distinct vertex_layout_s
/// bgfx_encoder_t
encoder_t :: distinct encoder_s
/// bgfx_fatal_t
fatal_t :: enum cffi.uint {
DEBUG_CHECK = 0,
INVALID_SHADER = 1,
UNABLE_TO_INITIALIZE = 2,
UNABLE_TO_CREATE_TEXTURE = 3,
DEVICE_LOST = 4,
COUNT = 5,
}
/// bgfx_renderer_type_t
renderer_type_t :: enum cffi.uint {
NOOP = 0,
AGC = 1,
DIRECT3D11 = 2,
DIRECT3D12 = 3,
GNM = 4,
METAL = 5,
NVN = 6,
OPENGLES = 7,
OPENGL = 8,
VULKAN = 9,
COUNT = 10,
}
/// bgfx_access_t
access_t :: enum cffi.uint {
READ = 0,
WRITE = 1,
READWRITE = 2,
COUNT = 3,
}
/// bgfx_attrib_t
attrib_t :: enum cffi.uint {
POSITION = 0,
NORMAL = 1,
ANGENT = 2,
BITANGENT = 3,
COLOR0 = 4,
COLOR1 = 5,
COLOR2 = 6,
COLOR3 = 7,
INDICES = 8,
WEIGHT = 9,
EXCOORD0 = 10,
EXCOORD1 = 11,
EXCOORD2 = 12,
EXCOORD3 = 13,
EXCOORD4 = 14,
EXCOORD5 = 15,
EXCOORD6 = 16,
EXCOORD7 = 17,
COUNT = 18,
}
/// bgfx_attrib_type_t
attrib_type_t :: enum cffi.uint {
UINT8 = 0,
UINT10 = 1,
INT16 = 2,
HALF = 3,
FLOAT = 4,
COUNT = 5,
}
/// bgfx_texture_format_t
texture_format_t :: enum cffi.uint {
BC1 = 0,
BC2 = 1,
BC3 = 2,
BC4 = 3,
BC5 = 4,
BC6H = 5,
BC7 = 6,
ETC1 = 7,
ETC2 = 8,
ETC2A = 9,
ETC2A1 = 10,
PTC12 = 11,
PTC14 = 12,
PTC12A = 13,
PTC14A = 14,
PTC22 = 15,
PTC24 = 16,
ATC = 17,
ATCE = 18,
ATCI = 19,
ASTC4X4 = 20,
ASTC5X4 = 21,
ASTC5X5 = 22,
ASTC6X5 = 23,
ASTC6X6 = 24,
ASTC8X5 = 25,
ASTC8X6 = 26,
ASTC8X8 = 27,
ASTC10X5 = 28,
ASTC10X6 = 29,
ASTC10X8 = 30,
ASTC10X10 = 31,
ASTC12X10 = 32,
ASTC12X12 = 33,
UNKNOWN = 34,
R1 = 35,
A8 = 36,
R8 = 37,
R8I = 38,
R8U = 39,
R8S = 40,
R16 = 41,
R16I = 42,
R16U = 43,
R16F = 44,
R16S = 45,
R32I = 46,
R32U = 47,
R32F = 48,
RG8 = 49,
RG8I = 50,
RG8U = 51,
RG8S = 52,
RG16 = 53,
RG16I = 54,
RG16U = 55,
RG16F = 56,
RG16S = 57,
RG32I = 58,
RG32U = 59,
RG32F = 60,
RGB8 = 61,
RGB8I = 62,
RGB8U = 63,
RGB8S = 64,
RGB9E5F = 65,
BGRA8 = 66,
RGBA8 = 67,
RGBA8I = 68,
RGBA8U = 69,
RGBA8S = 70,
RGBA16 = 71,
RGBA16I = 72,
RGBA16U = 73,
RGBA16F = 74,
RGBA16S = 75,
RGBA32I = 76,
RGBA32U = 77,
RGBA32F = 78,
B5G6R5 = 79,
R5G6B5 = 80,
BGRA4 = 81,
RGBA4 = 82,
BGR5A1 = 83,
RGB5A1 = 84,
RGB10A2 = 85,
RG11B10F = 86,
UNKNOWNDEPTH = 87,
D16 = 88,
D24 = 89,
D24S8 = 90,
D32 = 91,
D16F = 92,
D24F = 93,
D32F = 94,
D0S8 = 95,
COUNT = 96,
}
/// bgfx_uniform_type_t
uniform_type_t :: enum cffi.uint {
SAMPLER = 0,
END = 1,
VEC4 = 2,
MAT3 = 3,
MAT4 = 4,
COUNT = 5,
}
/// bgfx_backbuffer_ratio_t
backbuffer_ratio_t :: enum cffi.uint {
EQUAL = 0,
HALF = 1,
QUARTER = 2,
EIGHTH = 3,
SIXTEENTH = 4,
DOUBLE = 5,
COUNT = 6,
}
/// bgfx_occlusion_query_result_t
occlusion_query_result_t :: enum cffi.uint {
INVISIBLE = 0,
VISIBLE = 1,
NORESULT = 2,
COUNT = 3,
}
/// bgfx_topology_t
topology_t :: enum cffi.uint {
RI_LIST = 0,
RI_STRIP = 1,
LINE_LIST = 2,
LINE_STRIP = 3,
POINT_LIST = 4,
COUNT = 5,
}
/// bgfx_topology_convert_t
topology_convert_t :: enum cffi.uint {
RI_LIST_FLIP_WINDING = 0,
RI_STRIP_FLIP_WINDING = 1,
RI_LIST_TO_LINE_LIST = 2,
RI_STRIP_TO_TRI_LIST = 3,
LINE_STRIP_TO_LINE_LIST = 4,
COUNT = 5,
}
/// bgfx_topology_sort_t
topology_sort_t :: enum cffi.uint {
DIRECTION_FRONT_TO_BACK_MIN = 0,
DIRECTION_FRONT_TO_BACK_AVG = 1,
DIRECTION_FRONT_TO_BACK_MAX = 2,
DIRECTION_BACK_TO_FRONT_MIN = 3,
DIRECTION_BACK_TO_FRONT_AVG = 4,
DIRECTION_BACK_TO_FRONT_MAX = 5,
DISTANCE_FRONT_TO_BACK_MIN = 6,
DISTANCE_FRONT_TO_BACK_AVG = 7,
DISTANCE_FRONT_TO_BACK_MAX = 8,
DISTANCE_BACK_TO_FRONT_MIN = 9,
DISTANCE_BACK_TO_FRONT_AVG = 10,
DISTANCE_BACK_TO_FRONT_MAX = 11,
COUNT = 12,
}
/// bgfx_view_mode_t
view_mode_t :: enum cffi.uint {
DEFAULT = 0,
SEQUENTIAL = 1,
DEPTH_ASCENDING = 2,
DEPTH_DESCENDING = 3,
COUNT = 4,
}
/// bgfx_native_window_handle_type_t
native_window_handle_type_t :: enum cffi.uint {
DEFAULT = 0,
WAYLAND = 1,
COUNT = 2,
}
/// bgfx_render_frame_t
render_frame_t :: enum cffi.uint {
NO_CONTEXT = 0,
RENDER = 1,
IMEOUT = 2,
EXITING = 3,
COUNT = 4,
}
/// bgfx_function_id_t
function_id_t :: enum cffi.uint {
ATTACHMENT_INIT = 0,
VERTEX_LAYOUT_BEGIN = 1,
VERTEX_LAYOUT_ADD = 2,
VERTEX_LAYOUT_DECODE = 3,
VERTEX_LAYOUT_HAS = 4,
VERTEX_LAYOUT_SKIP = 5,
VERTEX_LAYOUT_END = 6,
VERTEX_PACK = 7,
VERTEX_UNPACK = 8,
VERTEX_CONVERT = 9,
WELD_VERTICES = 10,
OPOLOGY_CONVERT = 11,
OPOLOGY_SORT_TRI_LIST = 12,
GET_SUPPORTED_RENDERERS = 13,
GET_RENDERER_NAME = 14,
INIT_CTOR = 15,
INIT = 16,
SHUTDOWN = 17,
RESET = 18,
FRAME = 19,
GET_RENDERER_TYPE = 20,
GET_CAPS = 21,
GET_STATS = 22,
ALLOC = 23,
COPY = 24,
MAKE_REF = 25,
MAKE_REF_RELEASE = 26,
SET_DEBUG = 27,
DBG_TEXT_CLEAR = 28,
DBG_TEXT_PRINTF = 29,
DBG_TEXT_VPRINTF = 30,
DBG_TEXT_IMAGE = 31,
CREATE_INDEX_BUFFER = 32,
SET_INDEX_BUFFER_NAME = 33,
DESTROY_INDEX_BUFFER = 34,
CREATE_VERTEX_LAYOUT = 35,
DESTROY_VERTEX_LAYOUT = 36,
CREATE_VERTEX_BUFFER = 37,
SET_VERTEX_BUFFER_NAME = 38,
DESTROY_VERTEX_BUFFER = 39,
CREATE_DYNAMIC_INDEX_BUFFER = 40,
CREATE_DYNAMIC_INDEX_BUFFER_MEM = 41,
UPDATE_DYNAMIC_INDEX_BUFFER = 42,
DESTROY_DYNAMIC_INDEX_BUFFER = 43,
CREATE_DYNAMIC_VERTEX_BUFFER = 44,
CREATE_DYNAMIC_VERTEX_BUFFER_MEM = 45,
UPDATE_DYNAMIC_VERTEX_BUFFER = 46,
DESTROY_DYNAMIC_VERTEX_BUFFER = 47,
GET_AVAIL_TRANSIENT_INDEX_BUFFER = 48,
GET_AVAIL_TRANSIENT_VERTEX_BUFFER = 49,
GET_AVAIL_INSTANCE_DATA_BUFFER = 50,
ALLOC_TRANSIENT_INDEX_BUFFER = 51,
ALLOC_TRANSIENT_VERTEX_BUFFER = 52,
ALLOC_TRANSIENT_BUFFERS = 53,
ALLOC_INSTANCE_DATA_BUFFER = 54,
CREATE_INDIRECT_BUFFER = 55,
DESTROY_INDIRECT_BUFFER = 56,
CREATE_SHADER = 57,
GET_SHADER_UNIFORMS = 58,
SET_SHADER_NAME = 59,
DESTROY_SHADER = 60,
CREATE_PROGRAM = 61,
CREATE_COMPUTE_PROGRAM = 62,
DESTROY_PROGRAM = 63,
IS_TEXTURE_VALID = 64,
IS_FRAME_BUFFER_VALID = 65,
CALC_TEXTURE_SIZE = 66,
CREATE_TEXTURE = 67,
CREATE_TEXTURE_2D = 68,
CREATE_TEXTURE_2D_SCALED = 69,
CREATE_TEXTURE_3D = 70,
CREATE_TEXTURE_CUBE = 71,
UPDATE_TEXTURE_2D = 72,
UPDATE_TEXTURE_3D = 73,
UPDATE_TEXTURE_CUBE = 74,
READ_TEXTURE = 75,
SET_TEXTURE_NAME = 76,
GET_DIRECT_ACCESS_PTR = 77,
DESTROY_TEXTURE = 78,
CREATE_FRAME_BUFFER = 79,
CREATE_FRAME_BUFFER_SCALED = 80,
CREATE_FRAME_BUFFER_FROM_HANDLES = 81,
CREATE_FRAME_BUFFER_FROM_ATTACHMENT = 82,
CREATE_FRAME_BUFFER_FROM_NWH = 83,
SET_FRAME_BUFFER_NAME = 84,
GET_TEXTURE = 85,
DESTROY_FRAME_BUFFER = 86,
CREATE_UNIFORM = 87,
GET_UNIFORM_INFO = 88,
DESTROY_UNIFORM = 89,
CREATE_OCCLUSION_QUERY = 90,
GET_RESULT = 91,
DESTROY_OCCLUSION_QUERY = 92,
SET_PALETTE_COLOR = 93,
SET_PALETTE_COLOR_RGBA8 = 94,
SET_VIEW_NAME = 95,
SET_VIEW_RECT = 96,
SET_VIEW_RECT_RATIO = 97,
SET_VIEW_SCISSOR = 98,
SET_VIEW_CLEAR = 99,
SET_VIEW_CLEAR_MRT = 100,
SET_VIEW_MODE = 101,
SET_VIEW_FRAME_BUFFER = 102,
SET_VIEW_TRANSFORM = 103,
SET_VIEW_ORDER = 104,
RESET_VIEW = 105,
ENCODER_BEGIN = 106,
ENCODER_END = 107,
ENCODER_SET_MARKER = 108,
ENCODER_SET_STATE = 109,
ENCODER_SET_CONDITION = 110,
ENCODER_SET_STENCIL = 111,
ENCODER_SET_SCISSOR = 112,
ENCODER_SET_SCISSOR_CACHED = 113,
ENCODER_SET_TRANSFORM = 114,
ENCODER_SET_TRANSFORM_CACHED = 115,
ENCODER_ALLOC_TRANSFORM = 116,
ENCODER_SET_UNIFORM = 117,
ENCODER_SET_INDEX_BUFFER = 118,
ENCODER_SET_DYNAMIC_INDEX_BUFFER = 119,
ENCODER_SET_TRANSIENT_INDEX_BUFFER = 120,
ENCODER_SET_VERTEX_BUFFER = 121,
ENCODER_SET_VERTEX_BUFFER_WITH_LAYOUT = 122,
ENCODER_SET_DYNAMIC_VERTEX_BUFFER = 123,
ENCODER_SET_DYNAMIC_VERTEX_BUFFER_WITH_LAYOUT = 124,
ENCODER_SET_TRANSIENT_VERTEX_BUFFER = 125,
ENCODER_SET_TRANSIENT_VERTEX_BUFFER_WITH_LAYOUT = 126,
ENCODER_SET_VERTEX_COUNT = 127,
ENCODER_SET_INSTANCE_DATA_BUFFER = 128,
ENCODER_SET_INSTANCE_DATA_FROM_VERTEX_BUFFER = 129,
ENCODER_SET_INSTANCE_DATA_FROM_DYNAMIC_VERTEX_BUFFER = 130,
ENCODER_SET_INSTANCE_COUNT = 131,
ENCODER_SET_TEXTURE = 132,
ENCODER_TOUCH = 133,
ENCODER_SUBMIT = 134,
ENCODER_SUBMIT_OCCLUSION_QUERY = 135,
ENCODER_SUBMIT_INDIRECT = 136,
ENCODER_SUBMIT_INDIRECT_COUNT = 137,
ENCODER_SET_COMPUTE_INDEX_BUFFER = 138,
ENCODER_SET_COMPUTE_VERTEX_BUFFER = 139,
ENCODER_SET_COMPUTE_DYNAMIC_INDEX_BUFFER = 140,
ENCODER_SET_COMPUTE_DYNAMIC_VERTEX_BUFFER = 141,
ENCODER_SET_COMPUTE_INDIRECT_BUFFER = 142,
ENCODER_SET_IMAGE = 143,
ENCODER_DISPATCH = 144,
ENCODER_DISPATCH_INDIRECT = 145,
ENCODER_DISCARD = 146,
ENCODER_BLIT = 147,
REQUEST_SCREEN_SHOT = 148,
RENDER_FRAME = 149,
SET_PLATFORM_DATA = 150,
GET_INTERNAL_DATA = 151,
OVERRIDE_INTERNAL_TEXTURE_PTR = 152,
OVERRIDE_INTERNAL_TEXTURE = 153,
SET_MARKER = 154,
SET_STATE = 155,
SET_CONDITION = 156,
SET_STENCIL = 157,
SET_SCISSOR = 158,
SET_SCISSOR_CACHED = 159,
SET_TRANSFORM = 160,
SET_TRANSFORM_CACHED = 161,
ALLOC_TRANSFORM = 162,
SET_UNIFORM = 163,
SET_INDEX_BUFFER = 164,
SET_DYNAMIC_INDEX_BUFFER = 165,
SET_TRANSIENT_INDEX_BUFFER = 166,
SET_VERTEX_BUFFER = 167,
SET_VERTEX_BUFFER_WITH_LAYOUT = 168,
SET_DYNAMIC_VERTEX_BUFFER = 169,
SET_DYNAMIC_VERTEX_BUFFER_WITH_LAYOUT = 170,
SET_TRANSIENT_VERTEX_BUFFER = 171,
SET_TRANSIENT_VERTEX_BUFFER_WITH_LAYOUT = 172,
SET_VERTEX_COUNT = 173,
SET_INSTANCE_DATA_BUFFER = 174,
SET_INSTANCE_DATA_FROM_VERTEX_BUFFER = 175,
SET_INSTANCE_DATA_FROM_DYNAMIC_VERTEX_BUFFER = 176,
SET_INSTANCE_COUNT = 177,
SET_TEXTURE = 178,
OUCH = 179,
SUBMIT = 180,
SUBMIT_OCCLUSION_QUERY = 181,
SUBMIT_INDIRECT = 182,
SUBMIT_INDIRECT_COUNT = 183,
SET_COMPUTE_INDEX_BUFFER = 184,
SET_COMPUTE_VERTEX_BUFFER = 185,
SET_COMPUTE_DYNAMIC_INDEX_BUFFER = 186,
SET_COMPUTE_DYNAMIC_VERTEX_BUFFER = 187,
SET_COMPUTE_INDIRECT_BUFFER = 188,
SET_IMAGE = 189,
DISPATCH = 190,
DISPATCH_INDIRECT = 191,
DISCARD = 192,
BLIT = 193,
COUNT = 194,
}
/// bgfx_allocator_interface_s
allocator_interface_s :: struct #align (8) {
vtbl : ^allocator_vtbl_s,
}
/// bgfx_allocator_interface_s::bgfx_allocator_vtbl_s
allocator_vtbl_s :: struct #align (8) {
realloc : proc "c" (_this: ^allocator_interface_s, _ptr: rawptr, _size: cffi.ulong, _align: cffi.ulong, _file: cstring, _line: cffi.uint) -> rawptr,
}
/// bgfx_interface_vtbl
interface_vtbl :: struct #align (8) {
attachment_init : proc "c" (_this: ^attachment_s, _handle: texture_handle_s, _access: access_t, _layer: cffi.ushort, _numLayers: cffi.ushort, _mip: cffi.ushort, _resolve: cffi.uchar),
vertex_layout_begin : proc "c" (_this: ^vertex_layout_s, _rendererType: renderer_type_t) -> ^vertex_layout_s,
vertex_layout_add : proc "c" (_this: ^vertex_layout_s, _attrib: attrib_t, _num: cffi.uchar, _type: attrib_type_t, _normalized: cffi.bool, _asInt: cffi.bool) -> ^vertex_layout_s,
vertex_layout_decode : proc "c" (_this: ^vertex_layout_s, _attrib: attrib_t, _num: ^cffi.uchar, _type: ^attrib_type_t, _normalized: ^cffi.bool, _asInt: ^cffi.bool),
vertex_layout_has : proc "c" (_this: ^vertex_layout_s, _attrib: attrib_t) -> cffi.bool,
vertex_layout_skip : proc "c" (_this: ^vertex_layout_s, _num: cffi.uchar) -> ^vertex_layout_s,
vertex_layout_end : proc "c" (_this: ^vertex_layout_s),
vertex_pack : proc "c" (_input: [4]cffi.float, _inputNormalized: cffi.bool, _attr: attrib_t, _layout: ^vertex_layout_s, _data: rawptr, _index: cffi.uint),
vertex_unpack : proc "c" (_output: [4]cffi.float, _attr: attrib_t, _layout: ^vertex_layout_s, _data: rawptr, _index: cffi.uint),
vertex_convert : proc "c" (_dstLayout: ^vertex_layout_s, _dstData: rawptr, _srcLayout: ^vertex_layout_s, _srcData: rawptr, _num: cffi.uint),
weld_vertices : proc "c" (_output: rawptr, _layout: ^vertex_layout_s, _data: rawptr, _num: cffi.uint, _index32: cffi.bool, _epsilon: cffi.float) -> cffi.uint,
topology_convert : proc "c" (_conversion: topology_convert_t, _dst: rawptr, _dstSize: cffi.uint, _indices: rawptr, _numIndices: cffi.uint, _index32: cffi.bool) -> cffi.uint,
topology_sort_tri_list : proc "c" (_sort: topology_sort_t, _dst: rawptr, _dstSize: cffi.uint, _dir: [3]cffi.float, _pos: [3]cffi.float, _vertices: rawptr, _stride: cffi.uint, _indices: rawptr, _numIndices: cffi.uint, _index32: cffi.bool),
get_supported_renderers : proc "c" (_max: cffi.uchar, _enum: ^renderer_type_t) -> cffi.uchar,
get_renderer_name : proc "c" (_type: renderer_type_t) -> cstring,
init_ctor : proc "c" (_init: ^init_s),
init : proc "c" (_init: ^init_s) -> cffi.bool,
shutdown : proc "c" (),
reset : proc "c" (_width: cffi.uint, _height: cffi.uint, _flags: cffi.uint, _format: texture_format_t),
frame : proc "c" (_capture: cffi.bool) -> cffi.uint,
get_renderer_type : proc "c" () -> renderer_type_t,
get_caps : proc "c" () -> ^caps_s,
get_stats : proc "c" () -> ^stats_s,
alloc : proc "c" (_size: cffi.uint) -> ^memory_s,
copy : proc "c" (_data: rawptr, _size: cffi.uint) -> ^memory_s,
make_ref : proc "c" (_data: rawptr, _size: cffi.uint) -> ^memory_s,
make_ref_release : proc "c" (_data: rawptr, _size: cffi.uint, _releaseFn: proc "c" (), _userData: rawptr) -> ^memory_s,
set_debug : proc "c" (_debug: cffi.uint),
dbg_text_clear : proc "c" (_attr: cffi.uchar, _small: cffi.bool),
dbg_text_printf : proc "c" (_x: cffi.ushort, _y: cffi.ushort, _attr: cffi.uchar, _format: cstring),
dbg_text_vprintf : proc "c" (_x: cffi.ushort, _y: cffi.ushort, _attr: cffi.uchar, _format: cstring, _argList: cstring),
dbg_text_image : proc "c" (_x: cffi.ushort, _y: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort, _data: rawptr, _pitch: cffi.ushort),
create_index_buffer : proc "c" (_mem: ^memory_s, _flags: cffi.ushort) -> index_buffer_handle_s,
set_index_buffer_name : proc "c" (_handle: index_buffer_handle_s, _name: cstring, _len: cffi.int),
destroy_index_buffer : proc "c" (_handle: index_buffer_handle_s),
create_vertex_layout : proc "c" (_layout: ^vertex_layout_s) -> vertex_layout_handle_s,
destroy_vertex_layout : proc "c" (_layoutHandle: vertex_layout_handle_s),
create_vertex_buffer : proc "c" (_mem: ^memory_s, _layout: ^vertex_layout_s, _flags: cffi.ushort) -> vertex_buffer_handle_s,
set_vertex_buffer_name : proc "c" (_handle: vertex_buffer_handle_s, _name: cstring, _len: cffi.int),
destroy_vertex_buffer : proc "c" (_handle: vertex_buffer_handle_s),
create_dynamic_index_buffer : proc "c" (_num: cffi.uint, _flags: cffi.ushort) -> dynamic_index_buffer_handle_s,
create_dynamic_index_buffer_mem : proc "c" (_mem: ^memory_s, _flags: cffi.ushort) -> dynamic_index_buffer_handle_s,
update_dynamic_index_buffer : proc "c" (_handle: dynamic_index_buffer_handle_s, _startIndex: cffi.uint, _mem: ^memory_s),
destroy_dynamic_index_buffer : proc "c" (_handle: dynamic_index_buffer_handle_s),
create_dynamic_vertex_buffer : proc "c" (_num: cffi.uint, _layout: ^vertex_layout_s, _flags: cffi.ushort) -> dynamic_vertex_buffer_handle_s,
create_dynamic_vertex_buffer_mem : proc "c" (_mem: ^memory_s, _layout: ^vertex_layout_s, _flags: cffi.ushort) -> dynamic_vertex_buffer_handle_s,
update_dynamic_vertex_buffer : proc "c" (_handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint, _mem: ^memory_s),
destroy_dynamic_vertex_buffer : proc "c" (_handle: dynamic_vertex_buffer_handle_s),
get_avail_transient_index_buffer : proc "c" (_num: cffi.uint, _index32: cffi.bool) -> cffi.uint,
get_avail_transient_vertex_buffer : proc "c" (_num: cffi.uint, _layout: ^vertex_layout_s) -> cffi.uint,
get_avail_instance_data_buffer : proc "c" (_num: cffi.uint, _stride: cffi.ushort) -> cffi.uint,
alloc_transient_index_buffer : proc "c" (_tib: ^transient_index_buffer_s, _num: cffi.uint, _index32: cffi.bool),
alloc_transient_vertex_buffer : proc "c" (_tvb: ^transient_vertex_buffer_s, _num: cffi.uint, _layout: ^vertex_layout_s),
alloc_transient_buffers : proc "c" (_tvb: ^transient_vertex_buffer_s, _layout: ^vertex_layout_s, _numVertices: cffi.uint, _tib: ^transient_index_buffer_s, _numIndices: cffi.uint, _index32: cffi.bool) -> cffi.bool,
alloc_instance_data_buffer : proc "c" (_idb: ^instance_data_buffer_s, _num: cffi.uint, _stride: cffi.ushort),
create_indirect_buffer : proc "c" (_num: cffi.uint) -> indirect_buffer_handle_s,
destroy_indirect_buffer : proc "c" (_handle: indirect_buffer_handle_s),
create_shader : proc "c" (_mem: ^memory_s) -> shader_handle_s,
get_shader_uniforms : proc "c" (_handle: shader_handle_s, _uniforms: ^uniform_handle_s, _max: cffi.ushort) -> cffi.ushort,
set_shader_name : proc "c" (_handle: shader_handle_s, _name: cstring, _len: cffi.int),
destroy_shader : proc "c" (_handle: shader_handle_s),
create_program : proc "c" (_vsh: shader_handle_s, _fsh: shader_handle_s, _destroyShaders: cffi.bool) -> program_handle_s,
create_compute_program : proc "c" (_csh: shader_handle_s, _destroyShaders: cffi.bool) -> program_handle_s,
destroy_program : proc "c" (_handle: program_handle_s),
is_texture_valid : proc "c" (_depth: cffi.ushort, _cubeMap: cffi.bool, _numLayers: cffi.ushort, _format: texture_format_t, _flags: cffi.ulonglong) -> cffi.bool,
is_frame_buffer_valid : proc "c" (_num: cffi.uchar, _attachment: ^attachment_s) -> cffi.bool,
calc_texture_size : proc "c" (_info: ^texture_info_s, _width: cffi.ushort, _height: cffi.ushort, _depth: cffi.ushort, _cubeMap: cffi.bool, _hasMips: cffi.bool, _numLayers: cffi.ushort, _format: texture_format_t),
create_texture : proc "c" (_mem: ^memory_s, _flags: cffi.ulonglong, _skip: cffi.uchar, _info: ^texture_info_s) -> texture_handle_s,
create_texture_2d : proc "c" (_width: cffi.ushort, _height: cffi.ushort, _hasMips: cffi.bool, _numLayers: cffi.ushort, _format: texture_format_t, _flags: cffi.ulonglong, _mem: ^memory_s) -> texture_handle_s,
create_texture_2d_scaled : proc "c" (_ratio: backbuffer_ratio_t, _hasMips: cffi.bool, _numLayers: cffi.ushort, _format: texture_format_t, _flags: cffi.ulonglong) -> texture_handle_s,
create_texture_3d : proc "c" (_width: cffi.ushort, _height: cffi.ushort, _depth: cffi.ushort, _hasMips: cffi.bool, _format: texture_format_t, _flags: cffi.ulonglong, _mem: ^memory_s) -> texture_handle_s,
create_texture_cube : proc "c" (_size: cffi.ushort, _hasMips: cffi.bool, _numLayers: cffi.ushort, _format: texture_format_t, _flags: cffi.ulonglong, _mem: ^memory_s) -> texture_handle_s,
update_texture_2d : proc "c" (_handle: texture_handle_s, _layer: cffi.ushort, _mip: cffi.uchar, _x: cffi.ushort, _y: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort, _mem: ^memory_s, _pitch: cffi.ushort),
update_texture_3d : proc "c" (_handle: texture_handle_s, _mip: cffi.uchar, _x: cffi.ushort, _y: cffi.ushort, _z: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort, _depth: cffi.ushort, _mem: ^memory_s),
update_texture_cube : proc "c" (_handle: texture_handle_s, _layer: cffi.ushort, _side: cffi.uchar, _mip: cffi.uchar, _x: cffi.ushort, _y: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort, _mem: ^memory_s, _pitch: cffi.ushort),
read_texture : proc "c" (_handle: texture_handle_s, _data: rawptr, _mip: cffi.uchar) -> cffi.uint,
set_texture_name : proc "c" (_handle: texture_handle_s, _name: cstring, _len: cffi.int),
get_direct_access_ptr : proc "c" (_handle: texture_handle_s) -> rawptr,
destroy_texture : proc "c" (_handle: texture_handle_s),
create_frame_buffer : proc "c" (_width: cffi.ushort, _height: cffi.ushort, _format: texture_format_t, _textureFlags: cffi.ulonglong) -> frame_buffer_handle_s,
create_frame_buffer_scaled : proc "c" (_ratio: backbuffer_ratio_t, _format: texture_format_t, _textureFlags: cffi.ulonglong) -> frame_buffer_handle_s,
create_frame_buffer_from_handles : proc "c" (_num: cffi.uchar, _handles: ^texture_handle_s, _destroyTexture: cffi.bool) -> frame_buffer_handle_s,
create_frame_buffer_from_attachment : proc "c" (_num: cffi.uchar, _attachment: ^attachment_s, _destroyTexture: cffi.bool) -> frame_buffer_handle_s,
create_frame_buffer_from_nwh : proc "c" (_nwh: rawptr, _width: cffi.ushort, _height: cffi.ushort, _format: texture_format_t, _depthFormat: texture_format_t) -> frame_buffer_handle_s,
set_frame_buffer_name : proc "c" (_handle: frame_buffer_handle_s, _name: cstring, _len: cffi.int),
get_texture : proc "c" (_handle: frame_buffer_handle_s, _attachment: cffi.uchar) -> texture_handle_s,
destroy_frame_buffer : proc "c" (_handle: frame_buffer_handle_s),
create_uniform : proc "c" (_name: cstring, _type: uniform_type_t, _num: cffi.ushort) -> uniform_handle_s,
get_uniform_info : proc "c" (_handle: uniform_handle_s, _info: ^uniform_info_s),
destroy_uniform : proc "c" (_handle: uniform_handle_s),
create_occlusion_query : proc "c" () -> occlusion_query_handle_s,
get_result : proc "c" (_handle: occlusion_query_handle_s, _result: ^cffi.int) -> occlusion_query_result_t,
destroy_occlusion_query : proc "c" (_handle: occlusion_query_handle_s),
set_palette_color : proc "c" (_index: cffi.uchar, _rgba: [4]cffi.float),
set_palette_color_rgba8 : proc "c" (_index: cffi.uchar, _rgba: cffi.uint),
set_view_name : proc "c" (_id: cffi.ushort, _name: cstring, _len: cffi.int),
set_view_rect : proc "c" (_id: cffi.ushort, _x: cffi.ushort, _y: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort),
set_view_rect_ratio : proc "c" (_id: cffi.ushort, _x: cffi.ushort, _y: cffi.ushort, _ratio: backbuffer_ratio_t),
set_view_scissor : proc "c" (_id: cffi.ushort, _x: cffi.ushort, _y: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort),
set_view_clear : proc "c" (_id: cffi.ushort, _flags: cffi.ushort, _rgba: cffi.uint, _depth: cffi.float, _stencil: cffi.uchar),
set_view_clear_mrt : proc "c" (_id: cffi.ushort, _flags: cffi.ushort, _depth: cffi.float, _stencil: cffi.uchar, _c0: cffi.uchar, _c1: cffi.uchar, _c2: cffi.uchar, _c3: cffi.uchar, _c4: cffi.uchar, _c5: cffi.uchar, _c6: cffi.uchar, _c7: cffi.uchar),
set_view_mode : proc "c" (_id: cffi.ushort, _mode: view_mode_t),
set_view_frame_buffer : proc "c" (_id: cffi.ushort, _handle: frame_buffer_handle_s),
set_view_transform : proc "c" (_id: cffi.ushort, _view: rawptr, _proj: rawptr),
set_view_order : proc "c" (_id: cffi.ushort, _num: cffi.ushort, _order: ^cffi.ushort),
reset_view : proc "c" (_id: cffi.ushort),
encoder_begin : proc "c" (_forThread: cffi.bool) -> ^encoder_s,
encoder_end : proc "c" (_encoder: ^encoder_s),
encoder_set_marker : proc "c" (_this: ^encoder_s, _name: cstring, _len: cffi.int),
encoder_set_state : proc "c" (_this: ^encoder_s, _state: cffi.ulonglong, _rgba: cffi.uint),
encoder_set_condition : proc "c" (_this: ^encoder_s, _handle: occlusion_query_handle_s, _visible: cffi.bool),
encoder_set_stencil : proc "c" (_this: ^encoder_s, _fstencil: cffi.uint, _bstencil: cffi.uint),
encoder_set_scissor : proc "c" (_this: ^encoder_s, _x: cffi.ushort, _y: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort) -> cffi.ushort,
encoder_set_scissor_cached : proc "c" (_this: ^encoder_s, _cache: cffi.ushort),
encoder_set_transform : proc "c" (_this: ^encoder_s, _mtx: rawptr, _num: cffi.ushort) -> cffi.uint,
encoder_set_transform_cached : proc "c" (_this: ^encoder_s, _cache: cffi.uint, _num: cffi.ushort),
encoder_alloc_transform : proc "c" (_this: ^encoder_s, _transform: ^transform_s, _num: cffi.ushort) -> cffi.uint,
encoder_set_uniform : proc "c" (_this: ^encoder_s, _handle: uniform_handle_s, _value: rawptr, _num: cffi.ushort),
encoder_set_index_buffer : proc "c" (_this: ^encoder_s, _handle: index_buffer_handle_s, _firstIndex: cffi.uint, _numIndices: cffi.uint),
encoder_set_dynamic_index_buffer : proc "c" (_this: ^encoder_s, _handle: dynamic_index_buffer_handle_s, _firstIndex: cffi.uint, _numIndices: cffi.uint),
encoder_set_transient_index_buffer : proc "c" (_this: ^encoder_s, _tib: ^transient_index_buffer_s, _firstIndex: cffi.uint, _numIndices: cffi.uint),
encoder_set_vertex_buffer : proc "c" (_this: ^encoder_s, _stream: cffi.uchar, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint),
encoder_set_vertex_buffer_with_layout : proc "c" (_this: ^encoder_s, _stream: cffi.uchar, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint, _layoutHandle: vertex_layout_handle_s),
encoder_set_dynamic_vertex_buffer : proc "c" (_this: ^encoder_s, _stream: cffi.uchar, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint),
encoder_set_dynamic_vertex_buffer_with_layout : proc "c" (_this: ^encoder_s, _stream: cffi.uchar, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint, _layoutHandle: vertex_layout_handle_s),
encoder_set_transient_vertex_buffer : proc "c" (_this: ^encoder_s, _stream: cffi.uchar, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint, _numVertices: cffi.uint),
encoder_set_transient_vertex_buffer_with_layout : proc "c" (_this: ^encoder_s, _stream: cffi.uchar, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint, _numVertices: cffi.uint, _layoutHandle: vertex_layout_handle_s),
encoder_set_vertex_count : proc "c" (_this: ^encoder_s, _numVertices: cffi.uint),
encoder_set_instance_data_buffer : proc "c" (_this: ^encoder_s, _idb: ^instance_data_buffer_s, _start: cffi.uint, _num: cffi.uint),
encoder_set_instance_data_from_vertex_buffer : proc "c" (_this: ^encoder_s, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint, _num: cffi.uint),
encoder_set_instance_data_from_dynamic_vertex_buffer : proc "c" (_this: ^encoder_s, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint, _num: cffi.uint),
encoder_set_instance_count : proc "c" (_this: ^encoder_s, _numInstances: cffi.uint),
encoder_set_texture : proc "c" (_this: ^encoder_s, _stage: cffi.uchar, _sampler: uniform_handle_s, _handle: texture_handle_s, _flags: cffi.uint),
encoder_touch : proc "c" (_this: ^encoder_s, _id: cffi.ushort),
encoder_submit : proc "c" (_this: ^encoder_s, _id: cffi.ushort, _program: program_handle_s, _depth: cffi.uint, _flags: cffi.uchar),
encoder_submit_occlusion_query : proc "c" (_this: ^encoder_s, _id: cffi.ushort, _program: program_handle_s, _occlusionQuery: occlusion_query_handle_s, _depth: cffi.uint, _flags: cffi.uchar),
encoder_submit_indirect : proc "c" (_this: ^encoder_s, _id: cffi.ushort, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint, _num: cffi.uint, _depth: cffi.uint, _flags: cffi.uchar),
encoder_submit_indirect_count : proc "c" (_this: ^encoder_s, _id: cffi.ushort, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint, _numHandle: index_buffer_handle_s, _numIndex: cffi.uint, _numMax: cffi.uint, _depth: cffi.uint, _flags: cffi.uchar),
encoder_set_compute_index_buffer : proc "c" (_this: ^encoder_s, _stage: cffi.uchar, _handle: index_buffer_handle_s, _access: access_t),
encoder_set_compute_vertex_buffer : proc "c" (_this: ^encoder_s, _stage: cffi.uchar, _handle: vertex_buffer_handle_s, _access: access_t),
encoder_set_compute_dynamic_index_buffer : proc "c" (_this: ^encoder_s, _stage: cffi.uchar, _handle: dynamic_index_buffer_handle_s, _access: access_t),
encoder_set_compute_dynamic_vertex_buffer : proc "c" (_this: ^encoder_s, _stage: cffi.uchar, _handle: dynamic_vertex_buffer_handle_s, _access: access_t),
encoder_set_compute_indirect_buffer : proc "c" (_this: ^encoder_s, _stage: cffi.uchar, _handle: indirect_buffer_handle_s, _access: access_t),
encoder_set_image : proc "c" (_this: ^encoder_s, _stage: cffi.uchar, _handle: texture_handle_s, _mip: cffi.uchar, _access: access_t, _format: texture_format_t),
encoder_dispatch : proc "c" (_this: ^encoder_s, _id: cffi.ushort, _program: program_handle_s, _numX: cffi.uint, _numY: cffi.uint, _numZ: cffi.uint, _flags: cffi.uchar),
encoder_dispatch_indirect : proc "c" (_this: ^encoder_s, _id: cffi.ushort, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint, _num: cffi.uint, _flags: cffi.uchar),
encoder_discard : proc "c" (_this: ^encoder_s, _flags: cffi.uchar),
encoder_blit : proc "c" (_this: ^encoder_s, _id: cffi.ushort, _dst: texture_handle_s, _dstMip: cffi.uchar, _dstX: cffi.ushort, _dstY: cffi.ushort, _dstZ: cffi.ushort, _src: texture_handle_s, _srcMip: cffi.uchar, _srcX: cffi.ushort, _srcY: cffi.ushort, _srcZ: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort, _depth: cffi.ushort),
request_screen_shot : proc "c" (_handle: frame_buffer_handle_s, _filePath: cstring),
render_frame : proc "c" (_msecs: cffi.int) -> render_frame_t,
set_platform_data : proc "c" (_data: ^platform_data_s),
get_internal_data : proc "c" () -> ^internal_data_s,
override_internal_texture_ptr : proc "c" (_handle: texture_handle_s, _ptr: cffi.ulong) -> cffi.ulong,
override_internal_texture : proc "c" (_handle: texture_handle_s, _width: cffi.ushort, _height: cffi.ushort, _numMips: cffi.uchar, _format: texture_format_t, _flags: cffi.ulonglong) -> cffi.ulong,
set_marker : proc "c" (_name: cstring, _len: cffi.int),
set_state : proc "c" (_state: cffi.ulonglong, _rgba: cffi.uint),
set_condition : proc "c" (_handle: occlusion_query_handle_s, _visible: cffi.bool),
set_stencil : proc "c" (_fstencil: cffi.uint, _bstencil: cffi.uint),
set_scissor : proc "c" (_x: cffi.ushort, _y: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort) -> cffi.ushort,
set_scissor_cached : proc "c" (_cache: cffi.ushort),
set_transform : proc "c" (_mtx: rawptr, _num: cffi.ushort) -> cffi.uint,
set_transform_cached : proc "c" (_cache: cffi.uint, _num: cffi.ushort),
alloc_transform : proc "c" (_transform: ^transform_s, _num: cffi.ushort) -> cffi.uint,
set_uniform : proc "c" (_handle: uniform_handle_s, _value: rawptr, _num: cffi.ushort),
set_index_buffer : proc "c" (_handle: index_buffer_handle_s, _firstIndex: cffi.uint, _numIndices: cffi.uint),
set_dynamic_index_buffer : proc "c" (_handle: dynamic_index_buffer_handle_s, _firstIndex: cffi.uint, _numIndices: cffi.uint),
set_transient_index_buffer : proc "c" (_tib: ^transient_index_buffer_s, _firstIndex: cffi.uint, _numIndices: cffi.uint),
set_vertex_buffer : proc "c" (_stream: cffi.uchar, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint),
set_vertex_buffer_with_layout : proc "c" (_stream: cffi.uchar, _handle: vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint, _layoutHandle: vertex_layout_handle_s),
set_dynamic_vertex_buffer : proc "c" (_stream: cffi.uchar, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint),
set_dynamic_vertex_buffer_with_layout : proc "c" (_stream: cffi.uchar, _handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint, _numVertices: cffi.uint, _layoutHandle: vertex_layout_handle_s),
set_transient_vertex_buffer : proc "c" (_stream: cffi.uchar, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint, _numVertices: cffi.uint),
set_transient_vertex_buffer_with_layout : proc "c" (_stream: cffi.uchar, _tvb: ^transient_vertex_buffer_s, _startVertex: cffi.uint, _numVertices: cffi.uint, _layoutHandle: vertex_layout_handle_s),
set_vertex_count : proc "c" (_numVertices: cffi.uint),
set_instance_data_buffer : proc "c" (_idb: ^instance_data_buffer_s, _start: cffi.uint, _num: cffi.uint),
set_instance_data_from_vertex_buffer : proc "c" (_handle: vertex_buffer_handle_s, _startVertex: cffi.uint, _num: cffi.uint),
set_instance_data_from_dynamic_vertex_buffer : proc "c" (_handle: dynamic_vertex_buffer_handle_s, _startVertex: cffi.uint, _num: cffi.uint),
set_instance_count : proc "c" (_numInstances: cffi.uint),
set_texture : proc "c" (_stage: cffi.uchar, _sampler: uniform_handle_s, _handle: texture_handle_s, _flags: cffi.uint),
touch : proc "c" (_id: cffi.ushort),
submit : proc "c" (_id: cffi.ushort, _program: program_handle_s, _depth: cffi.uint, _flags: cffi.uchar),
submit_occlusion_query : proc "c" (_id: cffi.ushort, _program: program_handle_s, _occlusionQuery: occlusion_query_handle_s, _depth: cffi.uint, _flags: cffi.uchar),
submit_indirect : proc "c" (_id: cffi.ushort, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint, _num: cffi.uint, _depth: cffi.uint, _flags: cffi.uchar),
submit_indirect_count : proc "c" (_id: cffi.ushort, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint, _numHandle: index_buffer_handle_s, _numIndex: cffi.uint, _numMax: cffi.uint, _depth: cffi.uint, _flags: cffi.uchar),
set_compute_index_buffer : proc "c" (_stage: cffi.uchar, _handle: index_buffer_handle_s, _access: access_t),
set_compute_vertex_buffer : proc "c" (_stage: cffi.uchar, _handle: vertex_buffer_handle_s, _access: access_t),
set_compute_dynamic_index_buffer : proc "c" (_stage: cffi.uchar, _handle: dynamic_index_buffer_handle_s, _access: access_t),
set_compute_dynamic_vertex_buffer : proc "c" (_stage: cffi.uchar, _handle: dynamic_vertex_buffer_handle_s, _access: access_t),
set_compute_indirect_buffer : proc "c" (_stage: cffi.uchar, _handle: indirect_buffer_handle_s, _access: access_t),
set_image : proc "c" (_stage: cffi.uchar, _handle: texture_handle_s, _mip: cffi.uchar, _access: access_t, _format: texture_format_t),
dispatch : proc "c" (_id: cffi.ushort, _program: program_handle_s, _numX: cffi.uint, _numY: cffi.uint, _numZ: cffi.uint, _flags: cffi.uchar),
dispatch_indirect : proc "c" (_id: cffi.ushort, _program: program_handle_s, _indirectHandle: indirect_buffer_handle_s, _start: cffi.uint, _num: cffi.uint, _flags: cffi.uchar),
discard : proc "c" (_flags: cffi.uchar),
blit : proc "c" (_id: cffi.ushort, _dst: texture_handle_s, _dstMip: cffi.uchar, _dstX: cffi.ushort, _dstY: cffi.ushort, _dstZ: cffi.ushort, _src: texture_handle_s, _srcMip: cffi.uchar, _srcX: cffi.ushort, _srcY: cffi.ushort, _srcZ: cffi.ushort, _width: cffi.ushort, _height: cffi.ushort, _depth: cffi.ushort),
}
/// bgfx_callback_interface_s
callback_interface_s :: struct #align (8) {
vtbl : ^callback_vtbl_s,
}
/// bgfx_callback_interface_s::bgfx_callback_vtbl_s
callback_vtbl_s :: struct #align (8) {
fatal : proc "c" (_this: ^callback_interface_s, _filePath: cstring, _line: cffi.ushort, _code: fatal_t, _str: cstring),
trace_vargs : proc "c" (_this: ^callback_interface_s, _filePath: cstring, _line: cffi.ushort, _format: cstring, _argList: cstring),
profiler_begin : proc "c" (_this: ^callback_interface_s, _name: cstring, _abgr: cffi.uint, _filePath: cstring, _line: cffi.ushort),
profiler_begin_literal : proc "c" (_this: ^callback_interface_s, _name: cstring, _abgr: cffi.uint, _filePath: cstring, _line: cffi.ushort),
profiler_end : proc "c" (_this: ^callback_interface_s),
cache_read_size : proc "c" (_this: ^callback_interface_s, _id: cffi.ulonglong) -> cffi.uint,
cache_read : proc "c" (_this: ^callback_interface_s, _id: cffi.ulonglong, _data: rawptr, _size: cffi.uint) -> cffi.bool,
cache_write : proc "c" (_this: ^callback_interface_s, _id: cffi.ulonglong, _data: rawptr, _size: cffi.uint),
screen_shot : proc "c" (_this: ^callback_interface_s, _filePath: cstring, _width: cffi.uint, _height: cffi.uint, _pitch: cffi.uint, _data: rawptr, _size: cffi.uint, _yflip: cffi.bool),
capture_begin : proc "c" (_this: ^callback_interface_s, _width: cffi.uint, _height: cffi.uint, _pitch: cffi.uint, _format: texture_format_t, _yflip: cffi.bool),
capture_end : proc "c" (_this: ^callback_interface_s),
capture_frame : proc "c" (_this: ^callback_interface_s, _data: rawptr, _size: cffi.uint),
}
/// bgfx_dynamic_index_buffer_handle_s
dynamic_index_buffer_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_dynamic_vertex_buffer_handle_s
dynamic_vertex_buffer_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_frame_buffer_handle_s
frame_buffer_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_index_buffer_handle_s
index_buffer_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_indirect_buffer_handle_s
indirect_buffer_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_occlusion_query_handle_s
occlusion_query_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_program_handle_s
program_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_shader_handle_s
shader_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_texture_handle_s
texture_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_uniform_handle_s
uniform_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_vertex_buffer_handle_s
vertex_buffer_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_vertex_layout_handle_s
vertex_layout_handle_s :: struct #align (2) {
idx : cffi.ushort,
}
/// bgfx_caps_gpu_s
caps_gpu_s :: struct #align (2) {
vendorId : cffi.ushort,
deviceId : cffi.ushort,
}
/// bgfx_caps_limits_s
caps_limits_s :: struct #align (4) {
maxDrawCalls : cffi.uint,
maxBlits : cffi.uint,
maxTextureSize : cffi.uint,
maxTextureLayers : cffi.uint,
maxViews : cffi.uint,
maxFrameBuffers : cffi.uint,
maxFBAttachments : cffi.uint,
maxPrograms : cffi.uint,
maxShaders : cffi.uint,
maxTextures : cffi.uint,
maxTextureSamplers : cffi.uint,
maxComputeBindings : cffi.uint,
maxVertexLayouts : cffi.uint,
maxVertexStreams : cffi.uint,
maxIndexBuffers : cffi.uint,
maxVertexBuffers : cffi.uint,
maxDynamicIndexBuffers : cffi.uint,
maxDynamicVertexBuffers : cffi.uint,
maxUniforms : cffi.uint,
maxOcclusionQueries : cffi.uint,
maxEncoders : cffi.uint,
minResourceCbSize : cffi.uint,
transientVbSize : cffi.uint,
transientIbSize : cffi.uint,
}
/// bgfx_caps_s
caps_s :: struct #align (8) {
rendererType : renderer_type_t,
supported : cffi.ulonglong,
vendorId : cffi.ushort,
deviceId : cffi.ushort,
homogeneousDepth : cffi.bool,
originBottomLeft : cffi.bool,
numGPUs : cffi.uchar,
gpu : [4]caps_gpu_s,
limits : caps_limits_s,
formats : [96]cffi.ushort,
}
/// bgfx_internal_data_s
internal_data_s :: struct #align (8) {
caps : ^caps_s,
_context : rawptr,
}
/// bgfx_platform_data_s
platform_data_s :: struct #align (8) {
ndt : rawptr,
nwh : rawptr,
_context : rawptr,
backBuffer : rawptr,
backBufferDS : rawptr,
type : native_window_handle_type_t,
}
/// bgfx_resolution_s
resolution_s :: struct #align (4) {
format : texture_format_t,
width : cffi.uint,
height : cffi.uint,
reset : cffi.uint,
numBackBuffers : cffi.uchar,
maxFrameLatency : cffi.uchar,
debugTextScale : cffi.uchar,
}
/// bgfx_init_limits_s
init_limits_s :: struct #align (4) {
maxEncoders : cffi.ushort,
minResourceCbSize : cffi.uint,
transientVbSize : cffi.uint,
transientIbSize : cffi.uint,
}
/// bgfx_init_s
init_s :: struct #align (8) {
type : renderer_type_t,
vendorId : cffi.ushort,
deviceId : cffi.ushort,
capabilities : cffi.ulonglong,
debug : cffi.bool,
profile : cffi.bool,
platformData : platform_data_s,
resolution : resolution_s,
limits : init_limits_s,
callback : ^callback_interface_s,
allocator : ^allocator_interface_s,
}
/// bgfx_memory_s
memory_s :: struct #align (8) {
data : ^cffi.uchar,
size : cffi.uint,
}
/// bgfx_transient_index_buffer_s
transient_index_buffer_s :: struct #align (8) {
data : ^cffi.uchar,
size : cffi.uint,
startIndex : cffi.uint,
handle : index_buffer_handle_s,
isIndex16 : cffi.bool,
}
/// bgfx_transient_vertex_buffer_s
transient_vertex_buffer_s :: struct #align (8) {
data : ^cffi.uchar,
size : cffi.uint,
startVertex : cffi.uint,
stride : cffi.ushort,
handle : vertex_buffer_handle_s,
layoutHandle : vertex_layout_handle_s,
}
/// bgfx_instance_data_buffer_s
instance_data_buffer_s :: struct #align (8) {
data : ^cffi.uchar,
size : cffi.uint,
offset : cffi.uint,
num : cffi.uint,
stride : cffi.ushort,
handle : vertex_buffer_handle_s,
}
/// bgfx_texture_info_s
texture_info_s :: struct #align (4) {
format : texture_format_t,
storageSize : cffi.uint,
width : cffi.ushort,
height : cffi.ushort,
depth : cffi.ushort,
numLayers : cffi.ushort,
numMips : cffi.uchar,
bitsPerPixel : cffi.uchar,
cubeMap : cffi.bool,
}
/// bgfx_uniform_info_s
uniform_info_s :: struct #align (4) {
name : [256]cffi.char,
type : uniform_type_t,
num : cffi.ushort,
}
/// bgfx_attachment_s
attachment_s :: struct #align (4) {
access : access_t,
handle : texture_handle_s,
mip : cffi.ushort,
layer : cffi.ushort,
numLayers : cffi.ushort,
resolve : cffi.uchar,
}
/// bgfx_transform_s
transform_s :: struct #align (8) {
data : ^cffi.float,
num : cffi.ushort,
}
/// bgfx_view_stats_s
view_stats_s :: struct #align (8) {
name : [256]cffi.char,
view : cffi.ushort,
cpuTimeBegin : cffi.longlong,
cpuTimeEnd : cffi.longlong,
gpuTimeBegin : cffi.longlong,
gpuTimeEnd : cffi.longlong,
gpuFrameNum : cffi.uint,
}
/// bgfx_encoder_stats_s
encoder_stats_s :: struct #align (8) {
cpuTimeBegin : cffi.longlong,
cpuTimeEnd : cffi.longlong,
}
/// bgfx_stats_s
stats_s :: struct #align (8) {
cpuTimeFrame : cffi.longlong,
cpuTimeBegin : cffi.longlong,
cpuTimeEnd : cffi.longlong,
cpuTimerFreq : cffi.longlong,
gpuTimeBegin : cffi.longlong,
gpuTimeEnd : cffi.longlong,
gpuTimerFreq : cffi.longlong,
waitRender : cffi.longlong,
waitSubmit : cffi.longlong,
numDraw : cffi.uint,
numCompute : cffi.uint,
numBlit : cffi.uint,
maxGpuLatency : cffi.uint,
gpuFrameNum : cffi.uint,
numDynamicIndexBuffers : cffi.ushort,
numDynamicVertexBuffers : cffi.ushort,
numFrameBuffers : cffi.ushort,
numIndexBuffers : cffi.ushort,
numOcclusionQueries : cffi.ushort,
numPrograms : cffi.ushort,
numShaders : cffi.ushort,
numTextures : cffi.ushort,
numUniforms : cffi.ushort,
numVertexBuffers : cffi.ushort,
numVertexLayouts : cffi.ushort,
textureMemoryUsed : cffi.longlong,
rtMemoryUsed : cffi.longlong,
transientVbUsed : cffi.int,
transientIbUsed : cffi.int,
numPrims : [5]cffi.uint,
gpuMemoryMax : cffi.longlong,
gpuMemoryUsed : cffi.longlong,
width : cffi.ushort,
height : cffi.ushort,
textWidth : cffi.ushort,
textHeight : cffi.ushort,
numViews : cffi.ushort,
viewStats : ^view_stats_s,
numEncoders : cffi.uchar,
encoderStats : ^encoder_stats_s,
}
/// bgfx_vertex_layout_s
vertex_layout_s :: struct #align (4) {
hash : cffi.uint,
stride : cffi.ushort,
offset : [18]cffi.ushort,
attributes : [18]cffi.ushort,
}
/// bgfx_encoder_s
encoder_s :: struct {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment