#ifndef ALPHA2_NATIVE_GPU_D3D12_H
#define ALPHA2_NATIVE_GPU_D3D12_H
#include <stdint.h>
typedef struct Alpha2D3D12CopyInfo {
uint64_t resource;
uint64_t fence;
uint64_t fence_value;
uint32_t width;
uint32_t height;
uint32_t dxgi_format;
} Alpha2D3D12CopyInfo;
typedef struct Alpha2D3D12EncodeCopy {
uint64_t luma;
uint64_t chroma;
uint64_t destination;
uint64_t frame_fence;
uint64_t frame_value;
uint32_t width;
uint32_t height;
} Alpha2D3D12EncodeCopy;
#define ALPHA2_D3D12_ENCODE_H264_MAIN 1u
#define ALPHA2_D3D12_ENCODE_HEVC_MAIN 2u
#define ALPHA2_D3D12_ENCODE_AV1_MAIN 3u
#define ALPHA2_D3D12_RATE_CONTROL_CQP (1u << 0)
#define ALPHA2_D3D12_RATE_CONTROL_CBR (1u << 1)
#define ALPHA2_D3D12_RATE_CONTROL_VBR (1u << 2)
#define ALPHA2_D3D12_RATE_CONTROL_QVBR (1u << 3)
#define ALPHA2_D3D12_ENCODE_CHECK_VIDEO_DEVICE 1u
#define ALPHA2_D3D12_ENCODE_CHECK_CODEC 2u
#define ALPHA2_D3D12_ENCODE_CHECK_PROFILE_LEVEL 3u
#define ALPHA2_D3D12_ENCODE_CHECK_INPUT_FORMAT 4u
#define ALPHA2_D3D12_ENCODE_CHECK_RATE_CONTROL 5u
#define ALPHA2_D3D12_ENCODE_CHECK_RESOLUTION 6u
#define ALPHA2_D3D12_ENCODE_CHECK_PICTURE_CONTROL 7u
#define ALPHA2_D3D12_ENCODE_CHECK_CONFIGURATION 8u
#define ALPHA2_D3D12_ENCODE_CHECK_SUPPORT 9u
typedef struct Alpha2D3D12EncodeCaps {
uint32_t supported;
uint32_t refused_check;
int32_t refused_status;
uint32_t validation_flags;
uint32_t min_width;
uint32_t min_height;
uint32_t max_width;
uint32_t max_height;
uint32_t width_multiple;
uint32_t height_multiple;
uint32_t max_p_l0_references;
uint32_t max_b_l0_references;
uint32_t max_l1_references;
uint32_t rate_control_modes;
uint32_t refused_rate_control_modes;
int32_t rate_control_status[4];
} Alpha2D3D12EncodeCaps;
#endif