mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
libs/vkd3d-shader: Remove dependency on D3D12 headers.
We would like to allow building libvkd3d-shader as a standalone library without our Direct3D translation layers. In the long term, it should be possible to build and use libvkd3d-shader without Win32 data types, Vulkan headers and libs. Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
committed by
Alexandre Julliard
parent
4c35737940
commit
fddf86e6ea
@@ -118,9 +118,186 @@ HRESULT vkd3d_shader_compile_dxbc(const struct vkd3d_shader_code *dxbc,
|
||||
const struct vkd3d_shader_interface *shader_interface);
|
||||
void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
|
||||
|
||||
enum vkd3d_filter
|
||||
{
|
||||
VKD3D_FILTER_MIN_MAG_MIP_POINT = 0x0,
|
||||
VKD3D_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
|
||||
VKD3D_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
|
||||
VKD3D_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
|
||||
VKD3D_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
|
||||
VKD3D_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
|
||||
VKD3D_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
|
||||
VKD3D_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
|
||||
VKD3D_FILTER_ANISOTROPIC = 0x55,
|
||||
VKD3D_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
|
||||
VKD3D_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
|
||||
VKD3D_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
|
||||
VKD3D_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
|
||||
VKD3D_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
|
||||
VKD3D_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
|
||||
VKD3D_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
|
||||
VKD3D_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
|
||||
VKD3D_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
|
||||
VKD3D_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
|
||||
VKD3D_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
|
||||
VKD3D_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
|
||||
VKD3D_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
|
||||
VKD3D_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
|
||||
VKD3D_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
|
||||
VKD3D_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
|
||||
VKD3D_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
|
||||
VKD3D_FILTER_MINIMUM_ANISOTROPIC = 0x155,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
|
||||
VKD3D_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
|
||||
VKD3D_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_FILTER),
|
||||
};
|
||||
|
||||
enum vkd3d_texture_address_mode
|
||||
{
|
||||
VKD3D_TEXTURE_ADDRESS_MODE_WRAP = 1,
|
||||
VKD3D_TEXTURE_ADDRESS_MODE_MIRROR = 2,
|
||||
VKD3D_TEXTURE_ADDRESS_MODE_CLAMP = 3,
|
||||
VKD3D_TEXTURE_ADDRESS_MODE_BORDER = 4,
|
||||
VKD3D_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_TEXTURE_ADDRESS_MODE),
|
||||
};
|
||||
|
||||
enum vkd3d_comparison_func
|
||||
{
|
||||
VKD3D_COMPARISON_FUNC_NEVER = 1,
|
||||
VKD3D_COMPARISON_FUNC_LESS = 2,
|
||||
VKD3D_COMPARISON_FUNC_EQUAL = 3,
|
||||
VKD3D_COMPARISON_FUNC_LESS_EQUAL = 4,
|
||||
VKD3D_COMPARISON_FUNC_GREATER = 5,
|
||||
VKD3D_COMPARISON_FUNC_NOT_EQUAL = 6,
|
||||
VKD3D_COMPARISON_FUNC_GREATER_EQUAL = 7,
|
||||
VKD3D_COMPARISON_FUNC_ALWAYS = 8,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_COMPARISON_FUNC),
|
||||
};
|
||||
|
||||
enum vkd3d_static_border_color
|
||||
{
|
||||
VKD3D_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
|
||||
VKD3D_STATIC_BORDER_COLOR_OPAQUE_BLACK = 1,
|
||||
VKD3D_STATIC_BORDER_COLOR_OPAQUE_WHITE = 2,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_STATIC_BORDER_COLOR),
|
||||
};
|
||||
|
||||
struct vkd3d_static_sampler_desc
|
||||
{
|
||||
enum vkd3d_filter filter;
|
||||
enum vkd3d_texture_address_mode address_u;
|
||||
enum vkd3d_texture_address_mode address_v;
|
||||
enum vkd3d_texture_address_mode address_w;
|
||||
float mip_lod_bias;
|
||||
unsigned int max_anisotropy;
|
||||
enum vkd3d_comparison_func comparison_func;
|
||||
enum vkd3d_static_border_color border_color;
|
||||
float min_lod;
|
||||
float max_lod;
|
||||
unsigned int shader_register;
|
||||
unsigned int register_space;
|
||||
enum vkd3d_shader_visibility shader_visibility;
|
||||
};
|
||||
|
||||
enum vkd3d_descriptor_range_type
|
||||
{
|
||||
VKD3D_DESCRIPTOR_RANGE_TYPE_SRV = 0,
|
||||
VKD3D_DESCRIPTOR_RANGE_TYPE_UAV = 1,
|
||||
VKD3D_DESCRIPTOR_RANGE_TYPE_CBV = 2,
|
||||
VKD3D_DESCRIPTOR_RANGE_TYPE_SAMPLER = 3,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_DESCRIPTOR_RANGE_TYPE),
|
||||
};
|
||||
|
||||
struct vkd3d_descriptor_range
|
||||
{
|
||||
enum vkd3d_descriptor_range_type range_type;
|
||||
unsigned int descriptor_count;
|
||||
unsigned int base_shader_register;
|
||||
unsigned int register_space;
|
||||
unsigned int descriptor_table_offset;
|
||||
};
|
||||
|
||||
struct vkd3d_root_descriptor_table
|
||||
{
|
||||
unsigned int descriptor_range_count;
|
||||
const struct vkd3d_descriptor_range *descriptor_ranges;
|
||||
};
|
||||
|
||||
struct vkd3d_root_constants
|
||||
{
|
||||
unsigned int shader_register;
|
||||
unsigned int register_space;
|
||||
unsigned int value_count;
|
||||
};
|
||||
|
||||
struct vkd3d_root_descriptor
|
||||
{
|
||||
unsigned int shader_register;
|
||||
unsigned int register_space;
|
||||
};
|
||||
|
||||
enum vkd3d_root_parameter_type
|
||||
{
|
||||
VKD3D_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
|
||||
VKD3D_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 1,
|
||||
VKD3D_ROOT_PARAMETER_TYPE_CBV = 2,
|
||||
VKD3D_ROOT_PARAMETER_TYPE_SRV = 3,
|
||||
VKD3D_ROOT_PARAMETER_TYPE_UAV = 4,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_ROOT_PARAMETER_TYPE),
|
||||
};
|
||||
|
||||
struct vkd3d_root_parameter
|
||||
{
|
||||
enum vkd3d_root_parameter_type parameter_type;
|
||||
union
|
||||
{
|
||||
struct vkd3d_root_descriptor_table descriptor_table;
|
||||
struct vkd3d_root_constants constants;
|
||||
struct vkd3d_root_descriptor descriptor;
|
||||
} u;
|
||||
enum vkd3d_shader_visibility shader_visibility;
|
||||
};
|
||||
|
||||
enum vkd3d_root_signature_flags
|
||||
{
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_NONE = 0x0,
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
|
||||
VKD3D_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
|
||||
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_ROOT_SIGNATURE_FLAGS),
|
||||
};
|
||||
|
||||
struct vkd3d_root_signature_desc
|
||||
{
|
||||
unsigned int parameter_count;
|
||||
const struct vkd3d_root_parameter *parameters;
|
||||
unsigned int static_sampler_count;
|
||||
const struct vkd3d_static_sampler_desc *static_samplers;
|
||||
enum vkd3d_root_signature_flags flags;
|
||||
};
|
||||
|
||||
HRESULT vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
|
||||
D3D12_ROOT_SIGNATURE_DESC *root_signature);
|
||||
void vkd3d_shader_free_root_signature(D3D12_ROOT_SIGNATURE_DESC *root_signature);
|
||||
struct vkd3d_root_signature_desc *root_signature);
|
||||
void vkd3d_shader_free_root_signature(struct vkd3d_root_signature_desc *root_signature);
|
||||
|
||||
enum vkd3d_root_signature_version
|
||||
{
|
||||
@@ -129,7 +306,7 @@ enum vkd3d_root_signature_version
|
||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_ROOT_SIGNATURE_VERSION),
|
||||
};
|
||||
|
||||
HRESULT vkd3d_shader_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *root_signature,
|
||||
HRESULT vkd3d_shader_serialize_root_signature(const struct vkd3d_root_signature_desc *root_signature,
|
||||
enum vkd3d_root_signature_version version, struct vkd3d_shader_code *dxbc);
|
||||
|
||||
#define VKD3D_SHADER_MAX_UNORDERED_ACCESS_VIEWS 8
|
||||
|
Reference in New Issue
Block a user