mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
include: Document struct vkd3d_shader_interface_info.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
e61242b626
commit
72984bddcd
@ -105,15 +105,23 @@ struct vkd3d_shader_compile_option
|
|||||||
unsigned int value;
|
unsigned int value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Describes which shader stages a resource is visible to. */
|
||||||
enum vkd3d_shader_visibility
|
enum vkd3d_shader_visibility
|
||||||
{
|
{
|
||||||
|
/** The resource is visible to all shader stages. */
|
||||||
VKD3D_SHADER_VISIBILITY_ALL = 0,
|
VKD3D_SHADER_VISIBILITY_ALL = 0,
|
||||||
|
/** The resource is visible only to the vertex shader. */
|
||||||
VKD3D_SHADER_VISIBILITY_VERTEX = 1,
|
VKD3D_SHADER_VISIBILITY_VERTEX = 1,
|
||||||
|
/** The resource is visible only to the hull shader. */
|
||||||
VKD3D_SHADER_VISIBILITY_HULL = 2,
|
VKD3D_SHADER_VISIBILITY_HULL = 2,
|
||||||
|
/** The resource is visible only to the domain shader. */
|
||||||
VKD3D_SHADER_VISIBILITY_DOMAIN = 3,
|
VKD3D_SHADER_VISIBILITY_DOMAIN = 3,
|
||||||
|
/** The resource is visible only to the geometry shader. */
|
||||||
VKD3D_SHADER_VISIBILITY_GEOMETRY = 4,
|
VKD3D_SHADER_VISIBILITY_GEOMETRY = 4,
|
||||||
|
/** The resource is visible only to the pixel shader. */
|
||||||
VKD3D_SHADER_VISIBILITY_PIXEL = 5,
|
VKD3D_SHADER_VISIBILITY_PIXEL = 5,
|
||||||
|
|
||||||
|
/** The resource is visible only to the compute shader. */
|
||||||
VKD3D_SHADER_VISIBILITY_COMPUTE = 1000000000,
|
VKD3D_SHADER_VISIBILITY_COMPUTE = 1000000000,
|
||||||
|
|
||||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_VISIBILITY),
|
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_VISIBILITY),
|
||||||
@ -128,21 +136,51 @@ struct vkd3d_shader_code
|
|||||||
size_t size;
|
size_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** The type of a shader resource descriptor. */
|
||||||
enum vkd3d_shader_descriptor_type
|
enum vkd3d_shader_descriptor_type
|
||||||
{
|
{
|
||||||
VKD3D_SHADER_DESCRIPTOR_TYPE_SRV = 0x0, /* t# */
|
/**
|
||||||
VKD3D_SHADER_DESCRIPTOR_TYPE_UAV = 0x1, /* u# */
|
* The descriptor is a shader resource view. In Direct3D assembly, this is
|
||||||
VKD3D_SHADER_DESCRIPTOR_TYPE_CBV = 0x2, /* cb# */
|
* bound to a t# register.
|
||||||
VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER = 0x3, /* s# */
|
*/
|
||||||
|
VKD3D_SHADER_DESCRIPTOR_TYPE_SRV = 0x0,
|
||||||
|
/**
|
||||||
|
* The descriptor is an unordered access view. In Direct3D assembly, this is
|
||||||
|
* bound to a u# register.
|
||||||
|
*/
|
||||||
|
VKD3D_SHADER_DESCRIPTOR_TYPE_UAV = 0x1,
|
||||||
|
/**
|
||||||
|
* The descriptor is a constant buffer view. In Direct3D assembly, this is
|
||||||
|
* bound to a cb# register.
|
||||||
|
*/
|
||||||
|
VKD3D_SHADER_DESCRIPTOR_TYPE_CBV = 0x2,
|
||||||
|
/**
|
||||||
|
* The descriptor is a sampler. In Direct3D assembly, this is bound to an s#
|
||||||
|
* register.
|
||||||
|
*/
|
||||||
|
VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER = 0x3,
|
||||||
|
|
||||||
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_TYPE),
|
VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_TYPE),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A common structure describing the bind point of a descriptor or descriptor
|
||||||
|
* array in the target environment.
|
||||||
|
*/
|
||||||
struct vkd3d_shader_descriptor_binding
|
struct vkd3d_shader_descriptor_binding
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* The set of the descriptor. If the target environment does not support
|
||||||
|
* descriptor sets, this value must be set to 0.
|
||||||
|
*/
|
||||||
unsigned int set;
|
unsigned int set;
|
||||||
|
/** The binding index of the descriptor. */
|
||||||
unsigned int binding;
|
unsigned int binding;
|
||||||
unsigned int count; /* This must be 1 in this version of vkd3d-shader. */
|
/**
|
||||||
|
* The size of this descriptor array. Descriptor arrays are not supported in
|
||||||
|
* this version of vkd3d-shader, and therefore this value must be 1.
|
||||||
|
*/
|
||||||
|
unsigned int count;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum vkd3d_shader_binding_flag
|
enum vkd3d_shader_binding_flag
|
||||||
@ -203,67 +241,161 @@ struct vkd3d_shader_parameter
|
|||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the mapping of a single resource or resource array to its binding
|
||||||
|
* point in the target environment.
|
||||||
|
*
|
||||||
|
* For example, to map a Direct3D SRV with register space 2, register "t3" to
|
||||||
|
* a Vulkan descriptor in set 4 and with binding 5, set the following members:
|
||||||
|
* - \a type = VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
|
||||||
|
* - \a register_space = 2
|
||||||
|
* - \a register_index = 3
|
||||||
|
* - \a binding.set = 4
|
||||||
|
* - \a binding.binding = 5
|
||||||
|
* - \a binding.count = 1
|
||||||
|
*
|
||||||
|
* This structure is used in struct vkd3d_shader_interface_info.
|
||||||
|
*/
|
||||||
struct vkd3d_shader_resource_binding
|
struct vkd3d_shader_resource_binding
|
||||||
{
|
{
|
||||||
|
/** The type of this descriptor. */
|
||||||
enum vkd3d_shader_descriptor_type type;
|
enum vkd3d_shader_descriptor_type type;
|
||||||
|
/**
|
||||||
|
* Register space of the Direct3D resource. If the source format does not
|
||||||
|
* support multiple register spaces, this parameter must be set to 0.
|
||||||
|
*/
|
||||||
unsigned int register_space;
|
unsigned int register_space;
|
||||||
|
/** Register index of the DXBC resource. */
|
||||||
unsigned int register_index;
|
unsigned int register_index;
|
||||||
|
/** Shader stage(s) to which the resource is visible. */
|
||||||
enum vkd3d_shader_visibility shader_visibility;
|
enum vkd3d_shader_visibility shader_visibility;
|
||||||
unsigned int flags; /* vkd3d_shader_binding_flag */
|
/** A combination of zero or more elements of vkd3d_shader_binding_flag. */
|
||||||
|
unsigned int flags;
|
||||||
|
|
||||||
|
/** The binding in the target environment. */
|
||||||
struct vkd3d_shader_descriptor_binding binding;
|
struct vkd3d_shader_descriptor_binding binding;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u
|
#define VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the mapping of a Direct3D resource-sampler pair to a combined
|
||||||
|
* sampler (i.e. sampled image).
|
||||||
|
*
|
||||||
|
* This structure is used in struct vkd3d_shader_interface_info.
|
||||||
|
*/
|
||||||
struct vkd3d_shader_combined_resource_sampler
|
struct vkd3d_shader_combined_resource_sampler
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Register space of the Direct3D resource. If the source format does not
|
||||||
|
* support multiple register spaces, this parameter must be set to 0.
|
||||||
|
*/
|
||||||
unsigned int resource_space;
|
unsigned int resource_space;
|
||||||
|
/** Register index of the Direct3D resource. */
|
||||||
unsigned int resource_index;
|
unsigned int resource_index;
|
||||||
|
/**
|
||||||
|
* Register space of the Direct3D sampler. If the source format does not
|
||||||
|
* support multiple register spaces, this parameter must be set to 0.
|
||||||
|
*/
|
||||||
unsigned int sampler_space;
|
unsigned int sampler_space;
|
||||||
|
/** Register index of the Direct3D sampler. */
|
||||||
unsigned int sampler_index;
|
unsigned int sampler_index;
|
||||||
|
/** Shader stage(s) to which the resource is visible. */
|
||||||
enum vkd3d_shader_visibility shader_visibility;
|
enum vkd3d_shader_visibility shader_visibility;
|
||||||
unsigned int flags; /* vkd3d_shader_binding_flag */
|
/** A combination of zero or more elements of vkd3d_shader_binding_flag. */
|
||||||
|
unsigned int flags;
|
||||||
|
|
||||||
|
/** The binding in the target environment. */
|
||||||
struct vkd3d_shader_descriptor_binding binding;
|
struct vkd3d_shader_descriptor_binding binding;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the mapping of a single Direct3D UAV counter.
|
||||||
|
*
|
||||||
|
* This structure is used in struct vkd3d_shader_interface_info.
|
||||||
|
*/
|
||||||
struct vkd3d_shader_uav_counter_binding
|
struct vkd3d_shader_uav_counter_binding
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Register space of the Direct3D UAV descriptor. If the source format does
|
||||||
|
* not support multiple register spaces, this parameter must be set to 0.
|
||||||
|
*/
|
||||||
unsigned int register_space;
|
unsigned int register_space;
|
||||||
unsigned int register_index; /* u# */
|
/** Register index of the Direct3D UAV descriptor. */
|
||||||
|
unsigned int register_index;
|
||||||
|
/** Shader stage(s) to which the UAV counter is visible. */
|
||||||
enum vkd3d_shader_visibility shader_visibility;
|
enum vkd3d_shader_visibility shader_visibility;
|
||||||
|
|
||||||
|
/** The binding in the target environment. */
|
||||||
struct vkd3d_shader_descriptor_binding binding;
|
struct vkd3d_shader_descriptor_binding binding;
|
||||||
unsigned int offset;
|
unsigned int offset;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes the mapping of a Direct3D constant buffer to a range of push
|
||||||
|
* constants in the target environment.
|
||||||
|
*
|
||||||
|
* This structure is used in struct vkd3d_shader_interface_info.
|
||||||
|
*/
|
||||||
struct vkd3d_shader_push_constant_buffer
|
struct vkd3d_shader_push_constant_buffer
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Register space of the Direct3D resource. If the source format does not
|
||||||
|
* support multiple register spaces, this parameter must be set to 0.
|
||||||
|
*/
|
||||||
unsigned int register_space;
|
unsigned int register_space;
|
||||||
|
/** Register index of the Direct3D resource. */
|
||||||
unsigned int register_index;
|
unsigned int register_index;
|
||||||
|
/** Shader stage(s) to which the resource is visible. */
|
||||||
enum vkd3d_shader_visibility shader_visibility;
|
enum vkd3d_shader_visibility shader_visibility;
|
||||||
|
|
||||||
unsigned int offset; /* in bytes */
|
/** Offset, in bytes, of the target push constants. */
|
||||||
unsigned int size; /* in bytes */
|
unsigned int offset;
|
||||||
|
/** Size, in bytes, of the target push constants. */
|
||||||
|
unsigned int size;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Extends vkd3d_shader_compile_info. */
|
/**
|
||||||
|
* A chained structure describing the interface between a compiled shader and
|
||||||
|
* the target environment.
|
||||||
|
*
|
||||||
|
* For example, when compiling Direct3D shader byte code to SPIR-V, this
|
||||||
|
* structure contains mappings from Direct3D descriptor registers to SPIR-V
|
||||||
|
* descriptor bindings.
|
||||||
|
*
|
||||||
|
* This structure is optional. If omitted, vkd3d_shader_compile() will use a
|
||||||
|
* default mapping, in which resources are mapped to sequential bindings in
|
||||||
|
* register set 0.
|
||||||
|
*
|
||||||
|
* This structure extends vkd3d_shader_compile_info.
|
||||||
|
*
|
||||||
|
* This structure contains only input parameters.
|
||||||
|
*/
|
||||||
struct vkd3d_shader_interface_info
|
struct vkd3d_shader_interface_info
|
||||||
{
|
{
|
||||||
|
/** Must be set to VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO. */
|
||||||
enum vkd3d_shader_structure_type type;
|
enum vkd3d_shader_structure_type type;
|
||||||
|
/** Optional pointer to a structure containing further parameters. */
|
||||||
const void *next;
|
const void *next;
|
||||||
|
|
||||||
|
/** Pointer to an array of bindings for shader resource descriptors. */
|
||||||
const struct vkd3d_shader_resource_binding *bindings;
|
const struct vkd3d_shader_resource_binding *bindings;
|
||||||
|
/** Size, in elements, of \ref bindings. */
|
||||||
unsigned int binding_count;
|
unsigned int binding_count;
|
||||||
|
|
||||||
|
/** Pointer to an array of bindings for push constant buffers. */
|
||||||
const struct vkd3d_shader_push_constant_buffer *push_constant_buffers;
|
const struct vkd3d_shader_push_constant_buffer *push_constant_buffers;
|
||||||
|
/** Size, in elements, of \ref push_constant_buffers. */
|
||||||
unsigned int push_constant_buffer_count;
|
unsigned int push_constant_buffer_count;
|
||||||
|
|
||||||
|
/** Pointer to an array of bindings for combined samplers. */
|
||||||
const struct vkd3d_shader_combined_resource_sampler *combined_samplers;
|
const struct vkd3d_shader_combined_resource_sampler *combined_samplers;
|
||||||
|
/** Size, in elements, of \ref combined_samplers. */
|
||||||
unsigned int combined_sampler_count;
|
unsigned int combined_sampler_count;
|
||||||
|
|
||||||
|
/** Pointer to an array of bindings for UAV counters. */
|
||||||
const struct vkd3d_shader_uav_counter_binding *uav_counters;
|
const struct vkd3d_shader_uav_counter_binding *uav_counters;
|
||||||
|
/** Size, in elements, of \ref uav_counters. */
|
||||||
unsigned int uav_counter_count;
|
unsigned int uav_counter_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user