add bindings

This commit is contained in:
2026-07-22 00:32:44 +02:00
commit 23bca0e23e
13 changed files with 3454 additions and 0 deletions
+691
View File
@@ -0,0 +1,691 @@
// This file was generated by Cpp2Beef
using System;
using System.Interop;
namespace KTX;
static
{
/* The Khronos Data Format Specification (version 1.4.1) */
/*
** Copyright 2015-2026 The Khronos Group Inc.
** SPDX-License-Identifier: Apache-2.0
*/
/* This header defines a structure that can describe the layout of image
formats in memory. This means that the data format is transparent to
the application, and the expectation is that this should be used when
the layout is defined external to the API. Many Khronos APIs deliberately
keep the internal layout of images opaque, to allow proprietary layouts
and optimisations. This structure is not appropriate for describing
opaque layouts. */
/* We stick to standard C89 constructs for simplicity and portability. */
}
/* Accessors */
[AllowDuplicates] public enum khr_word_e : c_int {
Vendorid = 0U,
Descriptortype = 0U,
Versionnumber = 1U,
Descriptorblocksize = 1U,
Model = 2U,
Primaries = 2U,
Transfer = 2U,
Flags = 2U,
Texelblockdimension0 = 3U,
Texelblockdimension1 = 3U,
Texelblockdimension2 = 3U,
Texelblockdimension3 = 3U,
Bytesplane0 = 4U,
Bytesplane1 = 4U,
Bytesplane2 = 4U,
Bytesplane3 = 4U,
Bytesplane4 = 5U,
Bytesplane5 = 5U,
Bytesplane6 = 5U,
Bytesplane7 = 5U,
Samplestart = 6U,
Samplewords = 4U,
} public typealias khr_df_word_e = khr_word_e;
[AllowDuplicates] public enum khr_df_shift_e : c_int {
Vendorid = 0U,
Descriptortype = 17U,
Versionnumber = 0U,
Descriptorblocksize = 16U,
Model = 0U,
Primaries = 8U,
Transfer = 16U,
Flags = 24U,
Texelblockdimension0 = 0U,
Texelblockdimension1 = 8U,
Texelblockdimension2 = 16U,
Texelblockdimension3 = 24U,
Bytesplane0 = 0U,
Bytesplane1 = 8U,
Bytesplane2 = 16U,
Bytesplane3 = 24U,
Bytesplane4 = 0U,
Bytesplane5 = 8U,
Bytesplane6 = 16U,
Bytesplane7 = 24U,
}
[AllowDuplicates] public enum khr_df_mask_e : c_int {
Vendorid = 0x1FFFFU,
Descriptortype = 0x7FFFU,
Versionnumber = 0xFFFFU,
Descriptorblocksize = 0xFFFFU,
Model = 0xFFU,
Primaries = 0xFFU,
Transfer = 0xFFU,
Flags = 0xFFU,
Texelblockdimension0 = 0xFFU,
Texelblockdimension1 = 0xFFU,
Texelblockdimension2 = 0xFFU,
Texelblockdimension3 = 0xFFU,
Bytesplane0 = 0xFFU,
Bytesplane1 = 0xFFU,
Bytesplane2 = 0xFFU,
Bytesplane3 = 0xFFU,
Bytesplane4 = 0xFFU,
Bytesplane5 = 0xFFU,
Bytesplane6 = 0xFFU,
Bytesplane7 = 0xFFU,
}
static
{
/* Helper macro:
Extract field X from basic descriptor block BDB */
/* Helper macro:
Set field X of basic descriptor block BDB */
}
/* Offsets relative to the start of a sample */
[AllowDuplicates] public enum khr_df_sampleword_e : c_int {
Bitoffset = 0U,
Bitlength = 0U,
Channelid = 0U,
Qualifiers = 0U,
Sampleposition0 = 1U,
Sampleposition1 = 1U,
Sampleposition2 = 1U,
Sampleposition3 = 1U,
SamplepositionAll = 1U,
Samplelower = 2U,
Sampleupper = 3U,
}
[AllowDuplicates] public enum khr_df_sampleshift_e : c_int {
Bitoffset = 0U,
Bitlength = 16U,
Channelid = 24U,
/* N.B. Qualifiers are defined as an offset into a byte */
Qualifiers = 24U,
Sampleposition0 = 0U,
Sampleposition1 = 8U,
Sampleposition2 = 16U,
Sampleposition3 = 24U,
SamplepositionAll = 0U,
Samplelower = 0U,
Sampleupper = 0U,
}
[AllowDuplicates] public enum khr_df_samplemask_e : c_int {
Bitoffset = 0xFFFFU,
Bitlength = 0xFFU,
Channelid = 0xFU,
/* N.B. Qualifiers are defined as an offset into a byte */
Qualifiers = 0xF0U,
Sampleposition0 = 0xFFU,
Sampleposition1 = 0xFFU,
Sampleposition2 = 0xFFU,
Sampleposition3 = 0xFFU,
/* ISO C restricts enum values to range of int hence the
cast. We do it verbosely instead of using -1 to ensure
it is a 32-bit value even if int is 64 bits. */
SamplepositionAll = (int) 0xFFFFFFFFU,
Samplelower = (int) 0xFFFFFFFFU,
Sampleupper = (int) 0xFFFFFFFFU,
}
static
{
/* Helper macro:
Extract field X of sample S from basic descriptor block BDB */
/* Helper macro:
Set field X of sample S of basic descriptor block BDB */
/* Helper macro:
Number of samples in basic descriptor block BDB */
/* Helper macro:
Size in words of basic descriptor block for S samples */
}
/* Vendor ids */
[AllowDuplicates] public enum khr_df_vendorid_e : c_int {
/* Standard Khronos descriptor */
Khronos = 0U,
Max = 0x1FFFFU,
}
/* Descriptor types */
[AllowDuplicates] public enum khr_df_khr_descriptortype_e : c_int {
/* Default Khronos basic descriptor block */
Basicformat = 0U,
/* Extension descriptor block for additional planes */
AdditionalPlanes = 0x6001U,
/* Extension descriptor block for additional dimensions */
AdditionalDimensions = 0x6002U,
/* Bit indicates modifying requires understanding this extension */
NeededForWriteBit = 0x2000U,
/* Bit indicates processing requires understanding this extension */
NeededForDecodeBit = 0x4000U,
Max = 0x7FFFU,
}
/* Descriptor block version */
[AllowDuplicates] public enum khr_df_versionnumber_e : c_int {
/* Standard Khronos descriptor */
_10 = 0U, /* Version 1.0 of the specification */
_11 = 0U, /* Version 1.1 did not bump the version number */
_12 = 1U, /* Version 1.2 increased the version number */
_13 = 2U, /* Version 1.3 increased the version number */
_14 = 2U, /* Version 1.4.0 did not bump the block version number */
Latest = _14,
Max = 0xFFFFU,
}
/* Model in which the color coordinate space is defined.
There is no requirement that a color format use all the
channel types that are defined in the color model. */
[AllowDuplicates] public enum khr_df_model_e : c_int {
/* No interpretation of color channels defined */
Unspecified = 0U,
/* Color primaries (red, green, blue) + alpha, depth and stencil */
Rgbsda = 1U,
/* Color differences (Y', Cb, Cr) + alpha, depth and stencil */
Yuvsda = 2U,
/* Color differences (Y', I, Q) + alpha, depth and stencil */
Yiqsda = 3U,
/* Perceptual color (CIE L*a*b*) + alpha, depth and stencil */
Labsda = 4U,
/* Subtractive colors (cyan, magenta, yellow, black) + alpha */
Cmyka = 5U,
/* Non-color coordinate data (X, Y, Z, W) */
Xyzw = 6U,
/* Hue, saturation, value, hue angle on color circle, plus alpha */
HsvaAng = 7U,
/* Hue, saturation, lightness, hue angle on color circle, plus alpha */
HslaAng = 8U,
/* Hue, saturation, value, hue on color hexagon, plus alpha */
HsvaHex = 9U,
/* Hue, saturation, lightness, hue on color hexagon, plus alpha */
HslaHex = 10U,
/* Lightweight approximate color difference (luma, orange, green) */
Ycgcoa = 11U,
/* ITU BT.2020 constant luminance YcCbcCrc */
Yccbccrc = 12U,
/* ITU BT.2100 constant intensity ICtCp */
Ictcp = 13U,
/* CIE 1931 XYZ color coordinates (X, Y, Z) */
Ciexyz = 14U,
/* CIE 1931 xyY color coordinates (X, Y, Y) */
Ciexyy = 15U,
/* Compressed formats start at 128. */
/* These compressed formats should generally have a single sample,
sited at the 0,0 position of the texel block. Where multiple
channels are used to distinguish formats, these should be cosited. */
/* Direct3D (and S3) compressed formats */
/* Note that premultiplied status is recorded separately */
/* DXT1 "channels" are RGB (0), Alpha (1) */
/* DXT1/BC1 with one channel is opaque */
/* DXT1/BC1 with a cosited alpha sample is transparent */
Dxt1a = 128U,
Bc1a = 128U,
/* DXT2/DXT3/BC2, with explicit 4-bit alpha */
Dxt2 = 129U,
Dxt3 = 129U,
Bc2 = 129U,
/* DXT4/DXT5/BC3, with interpolated alpha */
Dxt4 = 130U,
Dxt5 = 130U,
Bc3 = 130U,
/* ATI1n/DXT5A/BC4 - single channel interpolated 8-bit data */
/* (The UNORM/SNORM variation is recorded in the channel data) */
Ati1n = 131U,
Dxt5a = 131U,
Bc4 = 131U,
/* ATI2n_XY/DXN/BC5 - two channel interpolated 8-bit data */
/* (The UNORM/SNORM variation is recorded in the channel data) */
Ati2nXy = 132U,
Dxn = 132U,
Bc5 = 132U,
/* BC6H - DX11 format for 16-bit float channels */
Bc6h = 133U,
/* BC7 - DX11 format */
Bc7 = 134U,
/* Gap left for future desktop expansion */
/* Mobile compressed formats follow */
/* A format of ETC1 indicates that the format shall be decodable
by an ETC1-compliant decoder and not rely on ETC2 features */
Etc1 = 160U,
/* A format of ETC2 is permitted to use ETC2 encodings on top of
the baseline ETC1 specification */
/* The ETC2 format has channels "red", "green", "RGB" and "alpha",
which should be cosited samples */
/* Punch-through alpha can be distinguished from full alpha by
the plane size in bytes required for the texel block */
Etc2 = 161U,
/* Adaptive Scalable Texture Compression */
/* ASTC HDR vs LDR is determined by the float flag in the channel */
/* ASTC block size can be distinguished by texel block size */
Astc = 162U,
/* ETC1S is a simplified subset of ETC1 */
Etc1s = 163U,
/* PowerVR Texture Compression */
Pvrtc = 164U,
Pvrtc2 = 165U,
/* UASTC for BASIS supercompression */
Uastc = 166U,
UastcLdr4x4 = 166U,
UastcHdr4x4 = 167U,
UastcHdr6x6 = 168U,
/* Proprietary formats (ATITC, etc.) should follow */
Max = 0xFFU,
}
/* Definition of channel names for each color model */
[AllowDuplicates] public enum khr_df_model_channels_e : c_int {
/* Unspecified format with nominal channel numbering */
UNSPECIFIED_0 = 0U,
UNSPECIFIED_1 = 1U,
UNSPECIFIED_2 = 2U,
UNSPECIFIED_3 = 3U,
UNSPECIFIED_4 = 4U,
UNSPECIFIED_5 = 5U,
UNSPECIFIED_6 = 6U,
UNSPECIFIED_7 = 7U,
UNSPECIFIED_8 = 8U,
UNSPECIFIED_9 = 9U,
UNSPECIFIED_10 = 10U,
UNSPECIFIED_11 = 11U,
UNSPECIFIED_12 = 12U,
UNSPECIFIED_13 = 13U,
UNSPECIFIED_14 = 14U,
UNSPECIFIED_15 = 15U,
/* MODEL_RGBSDA - red, green, blue, stencil, depth, alpha */
RGBSDA_RED = 0U,
RGBSDA_R = 0U,
RGBSDA_GREEN = 1U,
RGBSDA_G = 1U,
RGBSDA_BLUE = 2U,
RGBSDA_B = 2U,
RGBSDA_STENCIL = 13U,
RGBSDA_S = 13U,
RGBSDA_DEPTH = 14U,
RGBSDA_D = 14U,
RGBSDA_ALPHA = 15U,
RGBSDA_A = 15U,
/* MODEL_YUVSDA - luma, Cb, Cr, stencil, depth, alpha */
YUVSDA_Y = 0U,
YUVSDA_CB = 1U,
YUVSDA_U = 1U,
YUVSDA_CR = 2U,
YUVSDA_V = 2U,
YUVSDA_STENCIL = 13U,
YUVSDA_S = 13U,
YUVSDA_DEPTH = 14U,
YUVSDA_D = 14U,
YUVSDA_ALPHA = 15U,
YUVSDA_A = 15U,
/* MODEL_YIQSDA - luma, in-phase, quadrature, stencil, depth, alpha */
YIQSDA_Y = 0U,
YIQSDA_I = 1U,
YIQSDA_Q = 2U,
YIQSDA_STENCIL = 13U,
YIQSDA_S = 13U,
YIQSDA_DEPTH = 14U,
YIQSDA_D = 14U,
YIQSDA_ALPHA = 15U,
YIQSDA_A = 15U,
/* MODEL_LABSDA - CIELAB/L*a*b* luma, red-green, blue-yellow, stencil, depth, alpha */
LABSDA_L = 0U,
LABSDA_A = 1U,
LABSDA_B = 2U,
LABSDA_STENCIL = 13U,
LABSDA_S = 13U,
LABSDA_DEPTH = 14U,
LABSDA_D = 14U,
LABSDA_ALPHA = 15U,
/* NOTE: KHR_DF_CHANNEL_LABSDA_A is not a synonym for alpha! */
/* MODEL_CMYKA - cyan, magenta, yellow, key/blacK, alpha */
CMYKSDA_CYAN = 0U,
CMYKSDA_C = 0U,
CMYKSDA_MAGENTA = 1U,
CMYKSDA_M = 1U,
CMYKSDA_YELLOW = 2U,
CMYKSDA_Y = 2U,
CMYKSDA_KEY = 3U,
CMYKSDA_BLACK = 3U,
CMYKSDA_K = 3U,
CMYKSDA_ALPHA = 15U,
CMYKSDA_A = 15U,
/* MODEL_XYZW - coordinates x, y, z, w */
XYZW_X = 0U,
XYZW_Y = 1U,
XYZW_Z = 2U,
XYZW_W = 3U,
/* MODEL_HSVA_ANG - value (luma), saturation, hue, alpha, angular projection, conical space */
HSVA_ANG_VALUE = 0U,
HSVA_ANG_V = 0U,
HSVA_ANG_SATURATION = 1U,
HSVA_ANG_S = 1U,
HSVA_ANG_HUE = 2U,
HSVA_ANG_H = 2U,
HSVA_ANG_ALPHA = 15U,
HSVA_ANG_A = 15U,
/* MODEL_HSLA_ANG - lightness (luma), saturation, hue, alpha, angular projection, double conical space */
HSLA_ANG_LIGHTNESS = 0U,
HSLA_ANG_L = 0U,
HSLA_ANG_SATURATION = 1U,
HSLA_ANG_S = 1U,
HSLA_ANG_HUE = 2U,
HSLA_ANG_H = 2U,
HSLA_ANG_ALPHA = 15U,
HSLA_ANG_A = 15U,
/* MODEL_HSVA_HEX - value (luma), saturation, hue, alpha, hexagonal projection, conical space */
HSVA_HEX_VALUE = 0U,
HSVA_HEX_V = 0U,
HSVA_HEX_SATURATION = 1U,
HSVA_HEX_S = 1U,
HSVA_HEX_HUE = 2U,
HSVA_HEX_H = 2U,
HSVA_HEX_ALPHA = 15U,
HSVA_HEX_A = 15U,
/* MODEL_HSLA_HEX - lightness (luma), saturation, hue, alpha, hexagonal projection, double conical space */
HSLA_HEX_LIGHTNESS = 0U,
HSLA_HEX_L = 0U,
HSLA_HEX_SATURATION = 1U,
HSLA_HEX_S = 1U,
HSLA_HEX_HUE = 2U,
HSLA_HEX_H = 2U,
HSLA_HEX_ALPHA = 15U,
HSLA_HEX_A = 15U,
/* MODEL_YCGCOA - luma, green delta, orange delta, alpha */
YCGCOA_Y = 0U,
YCGCOA_CG = 1U,
YCGCOA_CO = 2U,
YCGCOA_ALPHA = 15U,
YCGCOA_A = 15U,
/* MODEL_CIEXYZ - CIE 1931 X, Y, Z */
CIEXYZ_X = 0U,
CIEXYZ_Y = 1U,
CIEXYZ_Z = 2U,
/* MODEL_CIEXYY - CIE 1931 x, y, Y */
CIEXYY_X = 0U,
CIEXYY_YCHROMA = 1U,
CIEXYY_YLUMA = 2U,
/* Compressed formats */
/* MODEL_DXT1A/MODEL_BC1A */
DXT1A_COLOR = 0U,
BC1A_COLOR = 0U,
DXT1A_ALPHAPRESENT = 1U,
DXT1A_ALPHA = 1U,
BC1A_ALPHAPRESENT = 1U,
BC1A_ALPHA = 1U,
/* MODEL_DXT2/3/MODEL_BC2 */
DXT2_COLOR = 0U,
DXT3_COLOR = 0U,
BC2_COLOR = 0U,
DXT2_ALPHA = 15U,
DXT3_ALPHA = 15U,
BC2_ALPHA = 15U,
/* MODEL_DXT4/5/MODEL_BC3 */
DXT4_COLOR = 0U,
DXT5_COLOR = 0U,
BC3_COLOR = 0U,
DXT4_ALPHA = 15U,
DXT5_ALPHA = 15U,
BC3_ALPHA = 15U,
/* MODEL_BC4 */
BC4_DATA = 0U,
/* MODEL_BC5 */
BC5_RED = 0U,
BC5_R = 0U,
BC5_GREEN = 1U,
BC5_G = 1U,
/* MODEL_BC6H */
BC6H_COLOR = 0U,
BC6H_DATA = 0U,
/* MODEL_BC7 */
BC7_DATA = 0U,
BC7_COLOR = 0U,
/* MODEL_ETC1 */
ETC1_DATA = 0U,
ETC1_COLOR = 0U,
/* MODEL_ETC2 */
ETC2_RED = 0U,
ETC2_R = 0U,
ETC2_GREEN = 1U,
ETC2_G = 1U,
ETC2_COLOR = 2U,
ETC2_ALPHA = 15U,
ETC2_A = 15U,
/* MODEL_ASTC */
ASTC_DATA = 0U,
ASTC_RGBA = 0U,
ASTC_RGB = 3U,
/* MODEL_ETC1S */
ETC1S_RGB = 0U,
ETC1S_RRR = 3U,
ETC1S_GGG = 4U,
ETC1S_AAA = 15U,
/* MODEL_PVRTC */
PVRTC_DATA = 0U,
PVRTC_COLOR = 0U,
/* MODEL_PVRTC2 */
PVRTC2_DATA = 0U,
PVRTC2_COLOR = 0U,
/* MODEL UASTC */
UASTC_RGB = 0U,
UASTC_RGBA = 3U,
UASTC_RRR = 4U,
UASTC_RRRG = 5U,
UASTC_RG = 6U,
/* MODEL UASTC_LDR_4x4 (alias) */
UASTC_LDR_4x4_RGB = 0U,
UASTC_LDR_4x4_RGBA = 3U,
UASTC_LDR_4x4_RRR = 4U,
UASTC_LDR_4x4_RRRG = 5U,
UASTC_LDR_4x4_RG = 6U,
/* MODEL UASTC_4x4_HDR */
UASTC_HDR_4x4_RGB = 0U,
/* MODEL UASTC_6x6_HDR */
UASTC_HDR_6x6_RGB = 0U,
/* Common channel names shared by multiple formats */
COMMON_LUMA = 0U,
COMMON_L = 0U,
COMMON_STENCIL = 13U,
COMMON_S = 13U,
COMMON_DEPTH = 14U,
COMMON_D = 14U,
COMMON_ALPHA = 15U,
COMMON_A = 15U,
}
/* Definition of the primary colors in color coordinates.
This is implicitly responsible for defining the conversion
between RGB an YUV color spaces.
LAB and related absolute color models should use
KHR_DF_PRIMARIES_CIEXYZ. */
[AllowDuplicates] public enum khr_df_primaries_e : c_int {
/* No color primaries defined */
Unspecified = 0U,
/* Color primaries of ITU-R BT.709 and sRGB */
Bt709 = 1U,
/* Synonym for KHR_DF_PRIMARIES_BT709 */
Srgb = 1U,
/* Color primaries of ITU-R BT.601 (625-line EBU variant) */
Bt601Ebu = 2U,
/* Color primaries of ITU-R BT.601 (525-line SMPTE C variant) */
Bt601Smpte = 3U,
/* Color primaries of ITU-R BT.2020 */
Bt2020 = 4U,
/* ITU-R BT.2100 uses the same primaries as BT.2020 */
Bt2100 = 4U,
/* CIE theoretical color coordinate space */
Ciexyz = 5U,
/* Academy Color Encoding System primaries */
Aces = 6U,
/* Color primaries of ACEScc */
Acescc = 7U,
/* Legacy NTSC 1953 primaries */
Ntsc1953 = 8U,
/* Legacy PAL 525-line primaries */
Pal525 = 9U,
/* Color primaries of Display P3 */
Displayp3 = 10U,
/* Color primaries of Adobe RGB (1998) */
Adobergb = 11U,
Max = 0xFFU,
}
/* Definition of the optical to digital transfer function
("gamma correction"). Most transfer functions are not a pure
power function and also include a linear element.
LAB and related absolute color representations should use
KHR_DF_TRANSFER_UNSPECIFIED.
These encodings indicate that the representation has had
the corresponding transfer function applied relative to a
linear representation; hence to process the linear intensity
represented by the value, a corresponding inverse transform
must be applied. */
[AllowDuplicates] public enum khr_df_transfer_e : c_int {
/* No transfer function defined */
Unspecified = 0U,
/* Linear transfer function (value proportional to intensity) */
Linear = 1U,
/* Perceptually-linear transfer function of sRGB (~2.2); also used for scRGB */
Srgb = 2U,
SrgbEotf = 2U,
Scrgb = 2U,
ScrgbEotf = 2U,
/* Perceptually-linear transfer function of ITU BT.601, BT.709 and BT.2020 (~1/.45) */
Itu = 3U,
ItuOetf = 3U,
Bt601 = 3U,
Bt601Oetf = 3U,
Bt709 = 3U,
Bt709Oetf = 3U,
Bt2020 = 3U,
Bt2020Oetf = 3U,
/* SMTPE170M (digital NTSC) defines an alias for the ITU transfer function (~1/.45) and a linear OOTF */
Smtpe170m = 3U,
Smtpe170mOetf = 3U,
Smtpe170mEotf = 3U,
/* Perceptually-linear gamma function of original NTSC (simple 2.2 gamma) */
Ntsc = 4U,
NtscEotf = 4U,
/* Sony S-log used by Sony video cameras */
Slog = 5U,
SlogOetf = 5U,
/* Sony S-log 2 used by Sony video cameras */
Slog2 = 6U,
Slog2Oetf = 6U,
/* ITU BT.1886 EOTF */
Bt1886 = 7U,
Bt1886Eotf = 7U,
/* ITU BT.2100 HLG OETF (typical scene-referred content), linear light normalized 0..1 */
HlgOetf = 8U,
/* ITU BT.2100 HLG EOTF (nominal HDR display of HLG content), linear light normalized 0..1 */
HlgEotf = 9U,
/* ITU BT.2100 PQ EOTF (typical HDR display-referred PQ content) */
PqEotf = 10U,
/* ITU BT.2100 PQ OETF (nominal scene described by PQ HDR content) */
PqOetf = 11U,
/* DCI P3 transfer function */
Dcip3 = 12U,
Dcip3Eotf = 12U,
/* Legacy PAL OETF */
PalOetf = 13U,
/* Legacy PAL 625-line EOTF */
Pal625Eotf = 14U,
/* Legacy ST240 transfer function */
St240 = 15U,
St240Oetf = 15U,
St240Eotf = 15U,
/* ACEScc transfer function */
Acescc = 16U,
AcesccOetf = 16U,
/* ACEScct transfer function */
Acescct = 17U,
AcescctOetf = 17U,
/* Adobe RGB (1998) transfer function */
Adobergb = 18U,
AdobergbEotf = 18U,
/* Legacy ITU BT.2100 HLG OETF (typical scene-referred content), linear light normalized 0..12 */
HlgUnnormalizedOetf = 19U,
Max = 0xFFU,
}
[AllowDuplicates] public enum khr_df_flags_e : c_int {
AlphaStraight = 0U,
AlphaPremultiplied = 1U,
}
[AllowDuplicates] public enum khr_df_sample_datatype_qualifiers_e : c_int {
Linear = 1U << 4U,
Exponent = 1U << 5U,
Signed = 1U << 6U,
Float = 1U << 7U,
}
+2072
View File
File diff suppressed because it is too large Load Diff
+281
View File
@@ -0,0 +1,281 @@
// This file was generated by Cpp2Beef
using System;
using System.Interop;
namespace KTX;
static
{
/* -*- tab-width: 4; -*- */
/* vi: set sw=2 ts=4 expandtab: */
}
/*
* Copyright 2017-2020 The Khronos Group, Inc.
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @internal
* @file
* @~English
*
* @brief Declares the public functions and structures of the
* KTX Vulkan texture loading API.
*
* A separate header file is used to avoid extra dependencies for those not
* using Vulkan. The nature of the Vulkan API, rampant structures and enums,
* means that vulkan.h must be included @e before including this file. The
* alternative is duplicating unattractively large parts of it.
*
* @author Mark Callow, github.com/MarkCallow
*/
/* Avoid Vulkan include file */
/**
* @struct ktxVulkanFunctions
* @~English
* @brief Struct for applications to pass Vulkan function pointers to the
* ktxTexture_VkUpload functions via a ktxVulkanDeviceInfo struct.
*
* @c vkGetInstanceProcAddr and @c vkGetDeviceProcAddr should be set, others
* are optional.
*/
[CRepr] public struct ktxVulkanFunctions {
// These are functions pointers we need to perform our vulkan duties.
public PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
public PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
// These we optionally specify
public PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
public PFN_vkAllocateMemory vkAllocateMemory;
public PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
public PFN_vkBindBufferMemory vkBindBufferMemory;
public PFN_vkBindImageMemory vkBindImageMemory;
public PFN_vkCmdBlitImage vkCmdBlitImage;
public PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
public PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
public PFN_vkCreateImage vkCreateImage;
public PFN_vkDestroyImage vkDestroyImage;
public PFN_vkCreateBuffer vkCreateBuffer;
public PFN_vkDestroyBuffer vkDestroyBuffer;
public PFN_vkCreateFence vkCreateFence;
public PFN_vkDestroyFence vkDestroyFence;
public PFN_vkEndCommandBuffer vkEndCommandBuffer;
public PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
public PFN_vkFreeMemory vkFreeMemory;
public PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
public PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
public PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
public PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
public PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
public PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
public PFN_vkMapMemory vkMapMemory;
public PFN_vkQueueSubmit vkQueueSubmit;
public PFN_vkQueueWaitIdle vkQueueWaitIdle;
public PFN_vkUnmapMemory vkUnmapMemory;
public PFN_vkWaitForFences vkWaitForFences;
}
/**
* @class ktxVulkanTexture
* @~English
* @brief Struct for returning information about the Vulkan texture image
* created by the ktxTexture_VkUpload* functions.
*
* Creation of these objects is internal to the upload functions.
*/
[CRepr] public struct ktxVulkanTexture
{
public PFN_vkDestroyImage vkDestroyImage; /*!< Pointer to vkDestroyImage function */
public PFN_vkFreeMemory vkFreeMemory; /*!< Pointer to vkFreeMemory function */
public VkImage image; /*!< Handle to the Vulkan image created by the loader. */
public VkFormat imageFormat; /*!< Format of the image data. */
public VkImageLayout imageLayout; /*!< Layout of the created image. Has the same
value as @p layout parameter passed to the
loader. */
public VkDeviceMemory deviceMemory; /*!< The memory (sub)allocation for the
image on the Vulkan device. Will not be
used with suballocators.*/
public VkImageViewType viewType; /*!< ViewType corresponding to @p image. Reflects
the dimensionality, cubeness and arrayness
of the image. */
public uint32 width; /*!< The width of the image. */
public uint32 height; /*!< The height of the image. */
public uint32 depth; /*!< The depth of the image. */
public uint32 levelCount; /*!< The number of MIP levels in the image. */
public uint32 layerCount; /*!< The number of array layers in the image. */
public uint64 allocationId; /*!< An id referencing suballocation(s). */
}
[CallingConvention(KTX_APIENTRYP)] public function uint64 ktxVulkanTexture_subAllocatorAllocMemFuncPtr(VkMemoryAllocateInfo* allocInfo, VkMemoryRequirements* memReq, uint64* pageCount);
[CallingConvention(KTX_APIENTRYP)] public function VkResult ktxVulkanTexture_subAllocatorBindBufferFuncPtr(VkBuffer buffer, uint64 allocId);
[CallingConvention(KTX_APIENTRYP)] public function VkResult ktxVulkanTexture_subAllocatorBindImageFuncPtr(VkImage image, uint64 allocId);
[CallingConvention(KTX_APIENTRYP)] public function VkResult ktxVulkanTexture_subAllocatorMemoryMapFuncPtr(uint64 allocId, uint64 pageNumber, VkDeviceSize* mapLength, void** dataPtr);
[CallingConvention(KTX_APIENTRYP)] public function void ktxVulkanTexture_subAllocatorMemoryUnmapFuncPtr(uint64 allocId, uint64 pageNumber);
[CallingConvention(KTX_APIENTRYP)] public function void ktxVulkanTexture_subAllocatorFreeMemFuncPtr(uint64 allocId);
/**
* @class ktxVulkanTexture_subAllocatorCallbacks
* @~English
* @brief Struct that contains all callbacks necessary for suballocation.
*
* These pointers must all be provided for upload or destroy to occur using suballocator callbacks.
*/
[CRepr] public struct ktxVulkanTexture_subAllocatorCallbacks {
public ktxVulkanTexture_subAllocatorAllocMemFuncPtr allocMemFuncPtr; /*!< Pointer to the memory procurement function. Can suballocate one or more pages. */
public ktxVulkanTexture_subAllocatorBindBufferFuncPtr bindBufferFuncPtr; /*!< Pointer to bind-buffer-to-suballocation(s) function. */
public ktxVulkanTexture_subAllocatorBindImageFuncPtr bindImageFuncPtr; /*!< Pointer to bind-image-to-suballocation(s) function. */
public ktxVulkanTexture_subAllocatorMemoryMapFuncPtr memoryMapFuncPtr; /*!< Pointer to function for mapping the memory of a specific page. */
public ktxVulkanTexture_subAllocatorMemoryUnmapFuncPtr memoryUnmapFuncPtr; /*!< Pointer to function for unmapping the memory of a specific page. */
public ktxVulkanTexture_subAllocatorFreeMemFuncPtr freeMemFuncPtr; /*!< Pointer to the free procurement function. */
}
extension ktxVulkanTexture
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanTexture_Destruct_WithSuballocator")] public static extern ktx_error_code_e Destruct_WithSuballocator(ktxVulkanTexture* This, VkDevice device, VkAllocationCallbacks* pAllocator, ktxVulkanTexture_subAllocatorCallbacks* subAllocatorCallbacks);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanTexture_Destruct")] public static extern void Destruct(ktxVulkanTexture* This, VkDevice device, VkAllocationCallbacks* pAllocator);
}
/**
* @class ktxVulkanDeviceInfo
* @~English
* @brief Struct for passing information about the Vulkan device on which
* to create images to the texture image loading functions.
*
* Avoids passing a large number of parameters to each loading function.
* Use of ktxVulkanDeviceInfo_create() or ktxVulkanDeviceInfo_construct() to
* populate this structure is highly recommended.
*
* @code
ktxVulkanDeviceInfo vdi;
ktxVulkanTexture texture;
vdi = ktxVulkanDeviceInfo_create(physicalDevice,
device,
queue,
cmdPool,
&allocator);
ktxLoadVkTextureN("texture_1.ktx", vdi, &texture, NULL, NULL);
// ...
ktxLoadVkTextureN("texture_n.ktx", vdi, &texture, NULL, NULL);
ktxVulkanDeviceInfo_destroy(vdi);
* @endcode
*/
[CRepr] public struct ktxVulkanDeviceInfo {
public VkInstance instance; /*!< Instance used to communicate with vulkan. */
public VkPhysicalDevice physicalDevice; /*!< Handle of the physical device. */
public VkDevice device; /*!< Handle of the logical device. */
public VkQueue queue; /*!< Handle to the queue to which to submit commands. */
public VkCommandBuffer cmdBuffer; /*!< Handle of the cmdBuffer to use. */
/** Handle of the command pool from which to allocate the command buffer. */
public VkCommandPool cmdPool;
/** Pointer to the allocator to use for the command buffer and created
* images.
*/
public VkAllocationCallbacks* pAllocator;
/** Memory properties of the Vulkan physical device. */
public VkPhysicalDeviceMemoryProperties deviceMemoryProperties;
/** The functions needed to operate functions */
public ktxVulkanFunctions vkFuncs;
}
extension ktxVulkanDeviceInfo
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanDeviceInfo_CreateEx")] public static extern ktxVulkanDeviceInfo* CreateEx(VkInstance instance, VkPhysicalDevice physicalDevice, VkDevice device, VkQueue queue, VkCommandPool cmdPool, VkAllocationCallbacks* pAllocator, ktxVulkanFunctions* pFunctions);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanDeviceInfo_Create")] public static extern ktxVulkanDeviceInfo* Create(VkPhysicalDevice physicalDevice, VkDevice device, VkQueue queue, VkCommandPool cmdPool, VkAllocationCallbacks* pAllocator);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanDeviceInfo_Construct")] public static extern ktx_error_code_e Construct(ktxVulkanDeviceInfo* This, VkPhysicalDevice physicalDevice, VkDevice device, VkQueue queue, VkCommandPool cmdPool, VkAllocationCallbacks* pAllocator);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanDeviceInfo_ConstructEx")] public static extern ktx_error_code_e ConstructEx(ktxVulkanDeviceInfo* This, VkInstance instance, VkPhysicalDevice physicalDevice, VkDevice device, VkQueue queue, VkCommandPool cmdPool, VkAllocationCallbacks* pAllocator, ktxVulkanFunctions* pFunctions);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanDeviceInfo_Destruct")] public static extern void Destruct(ktxVulkanDeviceInfo* This);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxVulkanDeviceInfo_Destroy")] public static extern void Destroy(ktxVulkanDeviceInfo* This);
}
extension ktxTexture
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture_VkUploadEx_WithSuballocator")] public static extern ktx_error_code_e VkUploadEx_WithSuballocator(ktxTexture* This, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture, VkImageTiling tiling, VkImageUsageFlags usageFlags, VkImageLayout finalLayout, ktxVulkanTexture_subAllocatorCallbacks* subAllocatorCallbacks);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture_VkUploadEx")] public static extern ktx_error_code_e VkUploadEx(ktxTexture* This, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture, VkImageTiling tiling, VkImageUsageFlags usageFlags, VkImageLayout finalLayout);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture_VkUpload")] public static extern ktx_error_code_e VkUpload(ktxTexture* texture, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture);
}
extension ktxTexture1
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture1_VkUploadEx_WithSuballocator")] public static extern ktx_error_code_e VkUploadEx_WithSuballocator(ktxTexture1* This, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture, VkImageTiling tiling, VkImageUsageFlags usageFlags, VkImageLayout finalLayout, ktxVulkanTexture_subAllocatorCallbacks* subAllocatorCallbacks);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture1_VkUploadEx")] public static extern ktx_error_code_e VkUploadEx(ktxTexture1* This, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture, VkImageTiling tiling, VkImageUsageFlags usageFlags, VkImageLayout finalLayout);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture1_VkUpload")] public static extern ktx_error_code_e VkUpload(ktxTexture1* texture, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture);
}
extension ktxTexture2
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture2_VkUploadEx_WithSuballocator")] public static extern ktx_error_code_e VkUploadEx_WithSuballocator(ktxTexture2* This, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture, VkImageTiling tiling, VkImageUsageFlags usageFlags, VkImageLayout finalLayout, ktxVulkanTexture_subAllocatorCallbacks* subAllocatorCallbacks);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture2_VkUploadEx")] public static extern ktx_error_code_e VkUploadEx(ktxTexture2* This, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture, VkImageTiling tiling, VkImageUsageFlags usageFlags, VkImageLayout finalLayout);
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture2_VkUpload")] public static extern ktx_error_code_e VkUpload(ktxTexture2* texture, ktxVulkanDeviceInfo* vdi, ktxVulkanTexture* vkTexture);
}
extension ktxTexture
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture_GetVkFormat")] public static extern VkFormat GetVkFormat(ktxTexture* This);
}
extension ktxTexture1
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture1_GetVkFormat")] public static extern VkFormat GetVkFormat(ktxTexture1* This);
}
extension ktxTexture2
{
[CallingConvention(KTX_APIENTRYP)] [LinkName("ktxTexture2_GetVkFormat")] public static extern VkFormat GetVkFormat(ktxTexture2* This);
}
/* KTX_H_A55A6F00956F42F3A137C11929827FE1 */
+61
View File
@@ -0,0 +1,61 @@
using System;
using CxxBuildTool;
namespace KTX;
static
{
public const CallingConventionAttribute.Kind KTX_APIENTRYP =
#if BF_PLATFORM_WINDOWS
.Stdcall;
#else
.Cdecl;
#endif
struct FILE;
struct ktxTexture_vvtbl;
struct ktxTexture_protected;
struct ktxTexture1_private;
struct ktxTexture2_private;
[OnCompile(.TypeDone)]
private static void Build()
{
if (!Compiler.IsBuilding) return;
CxxBuildTool.Ninja(
Compiler.ProjectDir + "/KTX-Software/lib/src",
Compiler.BuildDir + "/" + Compiler.ProjectName,
"libktx",
"-DKHRONOS_STATIC -I\"" +
Compiler.ProjectDir + "/KTX-Software/lib/include\" -I\"" +
Compiler.ProjectDir + "/KTX-Software/utils\" -I\"" +
Compiler.ProjectDir + "/KTX-Software/other_include\" -I\"" +
Compiler.ProjectDir + "/KTX-Software/external\" -I\"" +
Compiler.ProjectDir + "/KTX-Software/external/basis_universal\" -I\"" +
Compiler.ProjectDir + "/KTX-Software/external/basis_universal/zstd\" -I\"" +
Compiler.ProjectDir + "/KTX-Software/external/dfdutils\"",
"astc_codec.cpp",
"basis_transcode.cpp",
"miniz_wrapper.cpp",
"checkheader.c",
"etcunpack.cxx",
"filestream.c",
"glformat_str.c",
"hashlist.c",
"info.c",
"memstream.c",
"strings.c",
"swap.c",
"texture.c",
"texture2.c",
"vkformat_check.c",
"vkformat_check_variant.c",
"vkformat_str.c",
"vkformat_typesize.c"
);
}
}
[CRepr] struct ktxHashList { ktxHashListEntry* head; }
[CRepr] struct ktxHashListEntry;