vkd3d 2.1
The vkd3d 3D Graphics Library
Loading...
Searching...
No Matches
vkd3d_shader.h
Go to the documentation of this file.
1/*
2 * Copyright 2017-2019 Józef Kucia for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#ifndef __VKD3D_SHADER_H
20#define __VKD3D_SHADER_H
21
22#include <stdbool.h>
23#include <stdint.h>
24#include <stddef.h>
25#include <vkd3d_types.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif /* __cplusplus */
30
41
44{
45 VKD3D_SHADER_API_VERSION_1_0,
46 VKD3D_SHADER_API_VERSION_1_1,
47 VKD3D_SHADER_API_VERSION_1_2,
48 VKD3D_SHADER_API_VERSION_1_3,
49 VKD3D_SHADER_API_VERSION_1_4,
50 VKD3D_SHADER_API_VERSION_1_5,
51 VKD3D_SHADER_API_VERSION_1_6,
52 VKD3D_SHADER_API_VERSION_1_7,
53 VKD3D_SHADER_API_VERSION_1_8,
54 VKD3D_SHADER_API_VERSION_1_9,
55 VKD3D_SHADER_API_VERSION_1_10,
56 VKD3D_SHADER_API_VERSION_1_11,
57 VKD3D_SHADER_API_VERSION_1_12,
58 VKD3D_SHADER_API_VERSION_1_13,
59 VKD3D_SHADER_API_VERSION_1_14,
60 VKD3D_SHADER_API_VERSION_1_15,
61 VKD3D_SHADER_API_VERSION_1_16,
62 VKD3D_SHADER_API_VERSION_1_17,
63 VKD3D_SHADER_API_VERSION_1_18,
64 VKD3D_SHADER_API_VERSION_1_19,
65 VKD3D_SHADER_API_VERSION_2_0,
66 VKD3D_SHADER_API_VERSION_2_1,
67
68 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
69};
70
145
161
178
180{
181 VKD3D_SHADER_COMPILE_OPTION_FORMATTING_NONE = 0x00000000,
182 VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR = 0x00000001,
183 VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT = 0x00000002,
184 VKD3D_SHADER_COMPILE_OPTION_FORMATTING_OFFSETS = 0x00000004,
185 VKD3D_SHADER_COMPILE_OPTION_FORMATTING_HEADER = 0x00000008,
186 VKD3D_SHADER_COMPILE_OPTION_FORMATTING_RAW_IDS = 0x00000010,
193
194 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FORMATTING_FLAGS),
195};
196
199{
200 VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ROW_MAJOR = 0x00000001,
201 VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_COLUMN_MAJOR = 0x00000002,
202
203 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER),
204};
205
258
275
303
310{
314
315 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARSE_DXBC_FLAGS),
316};
317
439
455
477
480{
495 const void *code;
497 size_t size;
498};
499
526
532{
537 unsigned int set;
539 unsigned int binding;
545 unsigned int count;
546};
547
548enum vkd3d_shader_binding_flag
549{
550 VKD3D_SHADER_BINDING_FLAG_BUFFER = 0x00000001,
551 VKD3D_SHADER_BINDING_FLAG_IMAGE = 0x00000002,
552
553 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_BINDING_FLAG),
554};
555
573{
620
621 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FOG_FRAGMENT_MODE),
622};
623
662
668{
669 VKD3D_SHADER_PARAMETER_TYPE_UNKNOWN,
684
685 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_TYPE),
686};
687
693{
694 VKD3D_SHADER_PARAMETER_DATA_TYPE_UNKNOWN,
706
707 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_DATA_TYPE),
708};
709
715{
716 VKD3D_SHADER_PARAMETER_NAME_UNKNOWN,
834 VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_1,
835 VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_2,
836 VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_3,
837 VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_4,
838 VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_5,
839 VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_6,
840 VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_7,
1041 VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_1,
1042 VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_2,
1043 VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_3,
1044 VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_4,
1045 VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_5,
1065 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_1,
1066 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_2,
1067 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_3,
1068 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_4,
1069 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_5,
1089 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_1,
1090 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_2,
1091 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_3,
1092 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_4,
1093 VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_5,
1113
1114 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_NAME),
1115};
1116
1122{
1123 union
1124 {
1129 uint32_t u32;
1136 float f32;
1137 } u;
1138};
1139
1147{
1148 union
1149 {
1154 uint32_t u32;
1159 float f32;
1166 float f32_vec4[4];
1167 void *_pointer_pad;
1168 uint32_t _pad[4];
1169 } u;
1170};
1171
1187
1193{
1198 unsigned int set;
1200 unsigned int binding;
1202 uint32_t offset;
1203};
1204
1218{
1221 enum vkd3d_shader_parameter_data_type data_type;
1222 union
1223 {
1224 struct vkd3d_shader_parameter_immediate_constant immediate_constant;
1225 struct vkd3d_shader_parameter_specialization_constant specialization_constant;
1226 } u;
1227};
1228
1278
1299
1341
1342#define VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u
1343
1374
1396
1404{
1409 unsigned int register_space;
1411 unsigned int register_index;
1414
1416 unsigned int offset;
1418 unsigned int size;
1419};
1420
1464
1466{
1467 unsigned int stream_index;
1468 const char *semantic_name;
1469 unsigned int semantic_index;
1470 uint8_t component_index;
1471 uint8_t component_count;
1472 uint8_t output_slot;
1473};
1474
1475/* Extends vkd3d_shader_interface_info. */
1477{
1479 const void *next;
1480
1481 const struct vkd3d_shader_transform_feedback_element *elements;
1482 unsigned int element_count;
1483 const unsigned int *buffer_strides;
1484 unsigned int buffer_stride_count;
1485};
1486
1488{
1489 unsigned int static_offset;
1490 unsigned int dynamic_offset_index;
1491};
1492
1570
1609
1654
1674
1719
1721{
1722 VKD3D_SHADER_SPIRV_ENVIRONMENT_NONE,
1723 VKD3D_SHADER_SPIRV_ENVIRONMENT_OPENGL_4_5,
1724 VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0, /* default target */
1727
1728 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_ENVIRONMENT),
1729};
1730
1748
1749/* Extends vkd3d_shader_compile_info. */
1751{
1753 const void *next;
1754
1755 const char *entry_point; /* "main" if NULL. */
1756
1757 enum vkd3d_shader_spirv_environment environment;
1758
1759 const enum vkd3d_shader_spirv_extension *extensions;
1760 unsigned int extension_count;
1761
1762 const struct vkd3d_shader_parameter *parameters;
1763 unsigned int parameter_count;
1764
1765 bool dual_source_blending;
1766 const unsigned int *output_swizzles;
1767 unsigned int output_swizzle_count;
1768};
1769
1770enum vkd3d_shader_tessellator_output_primitive
1771{
1772 VKD3D_SHADER_TESSELLATOR_OUTPUT_POINT = 0x1,
1773 VKD3D_SHADER_TESSELLATOR_OUTPUT_LINE = 0x2,
1774 VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CW = 0x3,
1775 VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 0x4,
1776
1777 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_OUTPUT_PRIMITIVE),
1778};
1779
1780enum vkd3d_shader_tessellator_partitioning
1781{
1782 VKD3D_SHADER_TESSELLATOR_PARTITIONING_INTEGER = 0x1,
1783 VKD3D_SHADER_TESSELLATOR_PARTITIONING_POW2 = 0x2,
1784 VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 0x3,
1785 VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 0x4,
1786
1787 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_PARTITIONING),
1788};
1789
1790/* Extends vkd3d_shader_spirv_target_info. */
1792{
1794 const void *next;
1795
1796 enum vkd3d_shader_tessellator_output_primitive output_primitive;
1797 enum vkd3d_shader_tessellator_partitioning partitioning;
1798};
1799
1805{
1811 const char *name;
1817 const char *value;
1818};
1819
1848typedef int (*PFN_vkd3d_shader_open_include)(const char *filename, bool local,
1849 const char *parent_data, void *context, struct vkd3d_shader_code *out);
1864typedef void (*PFN_vkd3d_shader_close_include)(const struct vkd3d_shader_code *code, void *context);
1865
1925
1938{
1942 const void *next;
1943
1950 const char *entry_point;
1951 struct vkd3d_shader_code secondary_code;
1956 const char *profile;
1957};
1958
1959/* root signature 1.0 */
1960enum vkd3d_shader_filter
1961{
1962 VKD3D_SHADER_FILTER_MIN_MAG_MIP_POINT = 0x000,
1963 VKD3D_SHADER_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x001,
1964 VKD3D_SHADER_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x004,
1965 VKD3D_SHADER_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x005,
1966 VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x010,
1967 VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x011,
1968 VKD3D_SHADER_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x014,
1969 VKD3D_SHADER_FILTER_MIN_MAG_MIP_LINEAR = 0x015,
1970 VKD3D_SHADER_FILTER_ANISOTROPIC = 0x055,
1971 VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x080,
1972 VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x081,
1973 VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x084,
1974 VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x085,
1975 VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x090,
1976 VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x091,
1977 VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x094,
1978 VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x095,
1979 VKD3D_SHADER_FILTER_COMPARISON_ANISOTROPIC = 0x0d5,
1980 VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
1981 VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
1982 VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
1983 VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
1984 VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
1985 VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
1986 VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
1987 VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
1988 VKD3D_SHADER_FILTER_MINIMUM_ANISOTROPIC = 0x155,
1989 VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
1990 VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
1991 VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
1992 VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
1993 VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
1994 VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
1995 VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
1996 VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
1997 VKD3D_SHADER_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
1998
1999 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FILTER),
2000};
2001
2002enum vkd3d_shader_texture_address_mode
2003{
2004 VKD3D_SHADER_TEXTURE_ADDRESS_MODE_WRAP = 0x1,
2005 VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR = 0x2,
2006 VKD3D_SHADER_TEXTURE_ADDRESS_MODE_CLAMP = 0x3,
2007 VKD3D_SHADER_TEXTURE_ADDRESS_MODE_BORDER = 0x4,
2008 VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 0x5,
2009
2010 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TEXTURE_ADDRESS_MODE),
2011};
2012
2013enum vkd3d_shader_comparison_func
2014{
2015 VKD3D_SHADER_COMPARISON_FUNC_NEVER = 0x1,
2016 VKD3D_SHADER_COMPARISON_FUNC_LESS = 0x2,
2017 VKD3D_SHADER_COMPARISON_FUNC_EQUAL = 0x3,
2018 VKD3D_SHADER_COMPARISON_FUNC_LESS_EQUAL = 0x4,
2019 VKD3D_SHADER_COMPARISON_FUNC_GREATER = 0x5,
2020 VKD3D_SHADER_COMPARISON_FUNC_NOT_EQUAL = 0x6,
2021 VKD3D_SHADER_COMPARISON_FUNC_GREATER_EQUAL = 0x7,
2022 VKD3D_SHADER_COMPARISON_FUNC_ALWAYS = 0x8,
2023
2024 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPARISON_FUNC),
2025};
2026
2027enum vkd3d_shader_static_border_colour
2028{
2029 VKD3D_SHADER_STATIC_BORDER_COLOUR_TRANSPARENT_BLACK = 0x0,
2030 VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_BLACK = 0x1,
2031 VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_WHITE = 0x2,
2032
2033 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STATIC_BORDER_COLOUR),
2034};
2035
2037{
2038 enum vkd3d_shader_filter filter;
2039 enum vkd3d_shader_texture_address_mode address_u;
2040 enum vkd3d_shader_texture_address_mode address_v;
2041 enum vkd3d_shader_texture_address_mode address_w;
2042 float mip_lod_bias;
2043 unsigned int max_anisotropy;
2044 enum vkd3d_shader_comparison_func comparison_func;
2045 enum vkd3d_shader_static_border_colour border_colour;
2046 float min_lod;
2047 float max_lod;
2048 unsigned int shader_register;
2049 unsigned int register_space;
2050 enum vkd3d_shader_visibility shader_visibility;
2051};
2052
2054{
2055 enum vkd3d_shader_descriptor_type range_type;
2056 unsigned int descriptor_count;
2057 unsigned int base_shader_register;
2058 unsigned int register_space;
2059 unsigned int descriptor_table_offset;
2060};
2061
2063{
2064 unsigned int descriptor_range_count;
2065 const struct vkd3d_shader_descriptor_range *descriptor_ranges;
2066};
2067
2069{
2070 unsigned int shader_register;
2071 unsigned int register_space;
2072 unsigned int value_count;
2073};
2074
2076{
2077 unsigned int shader_register;
2078 unsigned int register_space;
2079};
2080
2081enum vkd3d_shader_root_parameter_type
2082{
2083 VKD3D_SHADER_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0x0,
2084 VKD3D_SHADER_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 0x1,
2085 VKD3D_SHADER_ROOT_PARAMETER_TYPE_CBV = 0x2,
2086 VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV = 0x3,
2087 VKD3D_SHADER_ROOT_PARAMETER_TYPE_UAV = 0x4,
2088
2089 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_PARAMETER_TYPE),
2090};
2091
2093{
2094 enum vkd3d_shader_root_parameter_type parameter_type;
2095 union
2096 {
2097 struct vkd3d_shader_root_descriptor_table descriptor_table;
2098 struct vkd3d_shader_root_constants constants;
2099 struct vkd3d_shader_root_descriptor descriptor;
2100 } u;
2101 enum vkd3d_shader_visibility shader_visibility;
2102};
2103
2104enum vkd3d_shader_root_signature_flags
2105{
2106 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_NONE = 0x00,
2107 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x01,
2108 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x02,
2109 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x04,
2110 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x08,
2111 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2112 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2113 VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2114
2115 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_FLAGS),
2116};
2117
2119{
2120 unsigned int parameter_count;
2121 const struct vkd3d_shader_root_parameter *parameters;
2122 unsigned int static_sampler_count;
2123 const struct vkd3d_shader_static_sampler_desc *static_samplers;
2124 enum vkd3d_shader_root_signature_flags flags;
2125};
2126
2127/* root signature 1.1 */
2128enum vkd3d_shader_root_descriptor_flags
2129{
2130 VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2131 VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2132 VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2133 VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2134
2135 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_DESCRIPTOR_FLAGS),
2136};
2137
2139{
2140 VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2141 VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2142 VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2143 VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2144 VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2147
2148 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_RANGE_FLAGS),
2149};
2150
2152{
2153 enum vkd3d_shader_descriptor_type range_type;
2154 unsigned int descriptor_count;
2155 unsigned int base_shader_register;
2156 unsigned int register_space;
2158 unsigned int descriptor_table_offset;
2159};
2160
2162{
2163 unsigned int descriptor_range_count;
2164 const struct vkd3d_shader_descriptor_range1 *descriptor_ranges;
2165};
2166
2168{
2169 unsigned int shader_register;
2170 unsigned int register_space;
2171 enum vkd3d_shader_root_descriptor_flags flags;
2172};
2173
2175{
2176 enum vkd3d_shader_root_parameter_type parameter_type;
2177 union
2178 {
2179 struct vkd3d_shader_root_descriptor_table1 descriptor_table;
2180 struct vkd3d_shader_root_constants constants;
2181 struct vkd3d_shader_root_descriptor1 descriptor;
2182 } u;
2183 enum vkd3d_shader_visibility shader_visibility;
2184};
2185
2187{
2188 unsigned int parameter_count;
2189 const struct vkd3d_shader_root_parameter1 *parameters;
2190 unsigned int static_sampler_count;
2191 const struct vkd3d_shader_static_sampler_desc *static_samplers;
2192 enum vkd3d_shader_root_signature_flags flags;
2193};
2194
2195enum vkd3d_shader_root_signature_version
2196{
2197 VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2198 VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
2199
2200 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_VERSION),
2201};
2202
2204{
2205 enum vkd3d_shader_root_signature_version version;
2206 union
2207 {
2210 } u;
2211};
2212
2247
2282
2306
2337
2385
2393{
2394 unsigned int resource_space;
2395 unsigned int resource_index;
2396 unsigned int sampler_space;
2397 unsigned int sampler_index;
2398};
2399
2432
2441{
2445 const void *next;
2446
2448 enum vkd3d_shader_tessellator_output_primitive output_primitive;
2450 enum vkd3d_shader_tessellator_partitioning partitioning;
2451};
2452
2461{
2465 const void *next;
2466
2468 unsigned int x, y, z;
2469};
2470
2487
2510
2565
2597
2600{
2623 VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE = 0x0b,
2624 VKD3D_SHADER_SV_TESS_FACTOR_QUADINT = 0x0c,
2625 VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE = 0x0d,
2626 VKD3D_SHADER_SV_TESS_FACTOR_TRIINT = 0x0e,
2627 VKD3D_SHADER_SV_TESS_FACTOR_LINEDET = 0x0f,
2628 VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN = 0x10,
2647
2648 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SYSVAL_SEMANTIC),
2649};
2650
2656{
2657 VKD3D_SHADER_MINIMUM_PRECISION_NONE = 0,
2666
2667 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_MINIMUM_PRECISION),
2668};
2669
2705
2720
2723{
2724 VKD3D_SHADER_SWIZZLE_X = 0x0,
2725 VKD3D_SHADER_SWIZZLE_Y = 0x1,
2726 VKD3D_SHADER_SWIZZLE_Z = 0x2,
2727 VKD3D_SHADER_SWIZZLE_W = 0x3,
2728
2729 VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SWIZZLE_COMPONENT),
2730};
2731
2744
2751{
2756 uint32_t tag;
2758 uint32_t checksum[4];
2763 unsigned int version;
2765 size_t size;
2770};
2771
2776#define VKD3D_SHADER_SWIZZLE_MASK (0xffu)
2778#define VKD3D_SHADER_SWIZZLE_SHIFT(idx) (8u * (idx))
2779
2789#define VKD3D_SHADER_SWIZZLE(x, y, z, w) \
2790 (VKD3D_SHADER_SWIZZLE_ ## x << VKD3D_SHADER_SWIZZLE_SHIFT(0) \
2791 | VKD3D_SHADER_SWIZZLE_ ## y << VKD3D_SHADER_SWIZZLE_SHIFT(1) \
2792 | VKD3D_SHADER_SWIZZLE_ ## z << VKD3D_SHADER_SWIZZLE_SHIFT(2) \
2793 | VKD3D_SHADER_SWIZZLE_ ## w << VKD3D_SHADER_SWIZZLE_SHIFT(3))
2794
2796#define VKD3D_SHADER_NO_SWIZZLE VKD3D_SHADER_SWIZZLE(X, Y, Z, W)
2797
2808
2866
2874{
2885 unsigned int input_mask;
2886};
2887
2934
2972
2973#ifdef LIBVKD3D_SHADER_SOURCE
2974# define VKD3D_SHADER_API VKD3D_EXPORT
2975#else
2976# define VKD3D_SHADER_API VKD3D_IMPORT
2977#endif
2978
2979#ifndef VKD3D_SHADER_NO_PROTOTYPES
2980
2992VKD3D_SHADER_API const char *vkd3d_shader_get_version(unsigned int *major, unsigned int *minor);
3008VKD3D_SHADER_API const enum vkd3d_shader_source_type *vkd3d_shader_get_supported_source_types(unsigned int *count);
3024 enum vkd3d_shader_source_type source_type, unsigned int *count);
3025
3101VKD3D_SHADER_API int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
3102 struct vkd3d_shader_code *out, char **messages);
3110VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages);
3120VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
3121
3157VKD3D_SHADER_API int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
3158 struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
3170 struct vkd3d_shader_versioned_root_signature_desc *root_signature);
3171
3201 const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
3202 struct vkd3d_shader_code *dxbc, char **messages);
3224 enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
3225
3297VKD3D_SHADER_API int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char **messages);
3308 struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
3309
3349VKD3D_SHADER_API int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
3350 struct vkd3d_shader_signature *signature, char **messages);
3371 const struct vkd3d_shader_signature *signature, const char *semantic_name,
3372 unsigned int semantic_index, unsigned int stream_index);
3382VKD3D_SHADER_API void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature);
3383
3384/* 1.3 */
3385
3419VKD3D_SHADER_API int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info,
3420 struct vkd3d_shader_code *out, char **messages);
3421
3432VKD3D_SHADER_API void vkd3d_shader_set_log_callback(PFN_vkd3d_log callback);
3433
3445VKD3D_SHADER_API void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc);
3446
3476VKD3D_SHADER_API int vkd3d_shader_parse_dxbc(const struct vkd3d_shader_code *dxbc,
3477 uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages);
3478
3509VKD3D_SHADER_API int vkd3d_shader_serialize_dxbc(size_t section_count,
3510 const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages);
3511
3524
3550VKD3D_SHADER_API void vkd3d_shader_build_varying_map(const struct vkd3d_shader_signature *output_signature,
3551 const struct vkd3d_shader_signature *input_signature,
3552 unsigned int *count, struct vkd3d_shader_varying_map *varyings);
3553
3568
3569#endif /* VKD3D_SHADER_NO_PROTOTYPES */
3570
3572typedef const char *(*PFN_vkd3d_shader_get_version)(unsigned int *major, unsigned int *minor);
3574typedef const enum vkd3d_shader_source_type *(*PFN_vkd3d_shader_get_supported_source_types)(unsigned int *count);
3576typedef const enum vkd3d_shader_target_type *(*PFN_vkd3d_shader_get_supported_target_types)(
3577 enum vkd3d_shader_source_type source_type, unsigned int *count);
3578
3580typedef int (*PFN_vkd3d_shader_compile)(const struct vkd3d_shader_compile_info *compile_info,
3581 struct vkd3d_shader_code *out, char **messages);
3583typedef void (*PFN_vkd3d_shader_free_messages)(char *messages);
3586
3589 struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
3592
3595 const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
3596 struct vkd3d_shader_code *dxbc, char **messages);
3597
3600 enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
3601
3603typedef int (*PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages);
3606 struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
3607
3610 struct vkd3d_shader_signature *signature, char **messages);
3612typedef struct vkd3d_shader_signature_element * (*PFN_vkd3d_shader_find_signature_element)(
3613 const struct vkd3d_shader_signature *signature, const char *semantic_name,
3614 unsigned int semantic_index, unsigned int stream_index);
3617
3619typedef void (*PFN_vkd3d_shader_preprocess)(struct vkd3d_shader_compile_info *compile_info,
3620 struct vkd3d_shader_code *out, char **messages);
3621
3623typedef void (*PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback);
3624
3628typedef int (*PFN_vkd3d_shader_parse_dxbc)(const struct vkd3d_shader_code *dxbc,
3629 uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages);
3632 const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages);
3633
3635typedef void (*PFN_vkd3d_shader_build_varying_map)(const struct vkd3d_shader_signature *output_signature,
3636 const struct vkd3d_shader_signature *input_signature,
3637 unsigned int *count, struct vkd3d_shader_varying_map *varyings);
3640
3644
3645#ifdef __cplusplus
3646}
3647#endif /* __cplusplus */
3648
3649#endif /* __VKD3D_SHADER_H */
A generic structure containing a GPU shader, in text or byte-code format.
Definition vkd3d_shader.h:480
const void * code
Pointer to the code.
Definition vkd3d_shader.h:495
size_t size
Size of code, in bytes.
Definition vkd3d_shader.h:497
This structure describes a single resource-sampler pair.
Definition vkd3d_shader.h:2393
Describes the mapping of a Direct3D resource-sampler pair to a combined sampler (i....
Definition vkd3d_shader.h:1351
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition vkd3d_shader.h:1372
unsigned int resource_index
Register index of the Direct3D resource.
Definition vkd3d_shader.h:1358
unsigned int sampler_index
Register index of the Direct3D sampler.
Definition vkd3d_shader.h:1365
unsigned int sampler_space
Register space of the Direct3D sampler.
Definition vkd3d_shader.h:1363
unsigned int resource_space
Register space of the Direct3D resource.
Definition vkd3d_shader.h:1356
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition vkd3d_shader.h:1369
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition vkd3d_shader.h:1367
A chained structure containing compilation parameters.
Definition vkd3d_shader.h:1679
const struct vkd3d_shader_compile_option * options
Pointer to an array of compilation options.
Definition vkd3d_shader.h:1707
struct vkd3d_shader_code source
Input source code or byte code.
Definition vkd3d_shader.h:1690
enum vkd3d_shader_log_level log_level
Minimum severity of messages returned from the shader function.
Definition vkd3d_shader.h:1712
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO.
Definition vkd3d_shader.h:1681
const char * source_name
Name of the initial source file, which may be used in error messages or debug information.
Definition vkd3d_shader.h:1717
unsigned int option_count
Size, in elements, of options.
Definition vkd3d_shader.h:1709
enum vkd3d_shader_source_type source_type
Format of the input code passed in source.
Definition vkd3d_shader.h:1693
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:1687
enum vkd3d_shader_target_type target_type
Desired output format.
Definition vkd3d_shader.h:1695
Various settings which may affect shader compilation or scanning, passed as part of struct vkd3d_shad...
Definition vkd3d_shader.h:446
unsigned int value
A value associated with the option.
Definition vkd3d_shader.h:453
enum vkd3d_shader_compile_option_name name
Name of the option.
Definition vkd3d_shader.h:448
A chained structure containing legacy Direct3D bytecode compilation parameters.
Definition vkd3d_shader.h:2526
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_D3DBC_SOURCE_INFO.
Definition vkd3d_shader.h:2528
uint32_t shadow_samplers
A mask indicating which samplers should be shadow (i.e.
Definition vkd3d_shader.h:2563
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2530
enum vkd3d_shader_resource_type texture_dimensions[6]
The dimension of each texture bound to the shader.
Definition vkd3d_shader.h:2543
A common structure describing the bind point of a descriptor or descriptor array in the target enviro...
Definition vkd3d_shader.h:532
unsigned int binding
The binding index of the descriptor.
Definition vkd3d_shader.h:539
unsigned int count
The size of this descriptor array.
Definition vkd3d_shader.h:545
unsigned int set
The set of the descriptor.
Definition vkd3d_shader.h:537
Describes a single shader descriptor; returned as part of struct vkd3d_shader_scan_descriptor_info.
Definition vkd3d_shader.h:2312
enum vkd3d_shader_resource_type resource_type
Resource type, if applicable, including its dimension.
Definition vkd3d_shader.h:2323
unsigned int register_index
Register index of the descriptor.
Definition vkd3d_shader.h:2321
enum vkd3d_shader_resource_data_type resource_data_type
Data type contained in the resource (for example, float or integer).
Definition vkd3d_shader.h:2325
enum vkd3d_shader_descriptor_type type
Type of the descriptor (for example, SRV, CBV, UAV, or sampler).
Definition vkd3d_shader.h:2314
unsigned int count
Size of this descriptor array, or 1 if a single descriptor.
Definition vkd3d_shader.h:2335
unsigned int flags
Bitwise combination of zero or more members of vkd3d_shader_descriptor_info_flag.
Definition vkd3d_shader.h:2330
unsigned int register_space
Register space of the resource, or 0 if the shader does not support multiple register spaces.
Definition vkd3d_shader.h:2319
A chained structure containing descriptor offsets.
Definition vkd3d_shader.h:1505
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:1509
const struct vkd3d_shader_descriptor_offset * uav_counter_offsets
Pointer to an array of offsets into the descriptor arrays referenced by the 'uav_counters' array in s...
Definition vkd3d_shader.h:1568
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO.
Definition vkd3d_shader.h:1507
unsigned int descriptor_table_offset
Byte offset within the push constants of an array of 32-bit descriptor array offsets.
Definition vkd3d_shader.h:1516
unsigned int descriptor_table_count
Size, in elements, of the descriptor table push constant array.
Definition vkd3d_shader.h:1518
const struct vkd3d_shader_descriptor_offset * binding_offsets
Pointer to an array of struct vkd3d_shader_descriptor_offset objects.
Definition vkd3d_shader.h:1561
Definition vkd3d_shader.h:1488
Definition vkd3d_shader.h:2152
Definition vkd3d_shader.h:2054
A description of a DXBC blob, as returned by vkd3d_shader_parse_dxbc().
Definition vkd3d_shader.h:2751
size_t section_count
The number of sections contained in the DXBC.
Definition vkd3d_shader.h:2767
struct vkd3d_shader_dxbc_section_desc * sections
Descriptions of the sections contained in the DXBC.
Definition vkd3d_shader.h:2769
uint32_t tag
The DXBC tag.
Definition vkd3d_shader.h:2756
size_t size
The total size of the DXBC blob.
Definition vkd3d_shader.h:2765
uint32_t checksum[4]
A checksum of the DXBC contents.
Definition vkd3d_shader.h:2758
unsigned int version
The DXBC version.
Definition vkd3d_shader.h:2763
A description of a DXBC section.
Definition vkd3d_shader.h:2738
uint32_t tag
The section tag.
Definition vkd3d_shader.h:2740
struct vkd3d_shader_code data
The contents of the section.
Definition vkd3d_shader.h:2742
A chained structure containing HLSL compilation parameters.
Definition vkd3d_shader.h:1938
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO.
Definition vkd3d_shader.h:1940
const char * profile
Pointer to a null-terminated string containing the target shader profile.
Definition vkd3d_shader.h:1956
const char * entry_point
Optional pointer to a null-terminated string containing the shader entry point.
Definition vkd3d_shader.h:1950
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:1942
A chained structure describing the interface between a compiled shader and the target environment.
Definition vkd3d_shader.h:1438
unsigned int combined_sampler_count
Size, in elements, of combined_samplers.
Definition vkd3d_shader.h:1457
const struct vkd3d_shader_resource_binding * bindings
Pointer to an array of bindings for shader resource descriptors.
Definition vkd3d_shader.h:1445
const struct vkd3d_shader_push_constant_buffer * push_constant_buffers
Pointer to an array of bindings for push constant buffers.
Definition vkd3d_shader.h:1450
const struct vkd3d_shader_uav_counter_binding * uav_counters
Pointer to an array of bindings for UAV counters.
Definition vkd3d_shader.h:1460
unsigned int binding_count
Size, in elements, of bindings.
Definition vkd3d_shader.h:1447
unsigned int push_constant_buffer_count
Size, in elements, of push_constant_buffers.
Definition vkd3d_shader.h:1452
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:1442
const struct vkd3d_shader_combined_resource_sampler * combined_samplers
Pointer to an array of bindings for combined samplers.
Definition vkd3d_shader.h:1455
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO.
Definition vkd3d_shader.h:1440
unsigned int uav_counter_count
Size, in elements, of uav_counters.
Definition vkd3d_shader.h:1462
A single preprocessor macro, passed as part of struct vkd3d_shader_preprocess_info.
Definition vkd3d_shader.h:1805
const char * name
Pointer to a null-terminated string containing the name of a macro.
Definition vkd3d_shader.h:1811
const char * value
Optional pointer to a null-terminated string containing the expansion of the macro.
Definition vkd3d_shader.h:1817
An individual shader parameter.
Definition vkd3d_shader.h:1247
enum vkd3d_shader_parameter_type type
How the parameter will be provided to the shader.
Definition vkd3d_shader.h:1251
struct vkd3d_shader_parameter_immediate_constant1 immediate_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT.
Definition vkd3d_shader.h:1263
struct vkd3d_shader_parameter_specialization_constant specialization_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT.
Definition vkd3d_shader.h:1268
enum vkd3d_shader_parameter_data_type data_type
The data type of the supplied parameter, which determines how it is to be interpreted.
Definition vkd3d_shader.h:1256
struct vkd3d_shader_parameter_buffer buffer
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Definition vkd3d_shader.h:1273
enum vkd3d_shader_parameter_name name
The builtin parameter to be mapped.
Definition vkd3d_shader.h:1249
The linkage of a parameter specified through a uniform buffer, used in struct vkd3d_shader_parameter1...
Definition vkd3d_shader.h:1193
uint32_t offset
The byte offset of the parameter within the buffer.
Definition vkd3d_shader.h:1202
unsigned int set
The set of the uniform buffer descriptor.
Definition vkd3d_shader.h:1198
unsigned int binding
The binding index of the uniform buffer descriptor.
Definition vkd3d_shader.h:1200
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter1.
Definition vkd3d_shader.h:1147
float f32_vec4[4]
A pointer to the value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32_VEC4.
Definition vkd3d_shader.h:1166
uint32_t u32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition vkd3d_shader.h:1154
float f32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition vkd3d_shader.h:1159
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter.
Definition vkd3d_shader.h:1122
float f32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition vkd3d_shader.h:1136
uint32_t u32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition vkd3d_shader.h:1129
Interface information regarding a builtin shader parameter.
Definition vkd3d_shader.h:2961
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO.
Definition vkd3d_shader.h:2963
unsigned int parameter_count
Size, in elements, of parameters.
Definition vkd3d_shader.h:2970
const struct vkd3d_shader_parameter1 * parameters
Pointer to an array of dynamic parameters for this shader instance.
Definition vkd3d_shader.h:2968
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2965
The linkage of a specialization constant parameter, used in struct vkd3d_shader_parameter and struct ...
Definition vkd3d_shader.h:1177
uint32_t id
The ID of the specialization constant.
Definition vkd3d_shader.h:1185
An individual shader parameter.
Definition vkd3d_shader.h:1218
A chained structure containing preprocessing parameters.
Definition vkd3d_shader.h:1878
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO.
Definition vkd3d_shader.h:1880
const struct vkd3d_shader_macro * macros
Pointer to an array of predefined macros.
Definition vkd3d_shader.h:1892
void * include_context
User-defined pointer which will be passed unmodified to the pfn_open_include and pfn_close_include ca...
Definition vkd3d_shader.h:1923
unsigned int macro_count
Size, in elements, of macros.
Definition vkd3d_shader.h:1894
PFN_vkd3d_shader_open_include pfn_open_include
Optional pointer to a callback function, which will be called in order to evaluate #include directive...
Definition vkd3d_shader.h:1908
PFN_vkd3d_shader_close_include pfn_close_include
Optional pointer to a callback function, which will be called whenever an included file is closed.
Definition vkd3d_shader.h:1918
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:1882
Describes the mapping of a Direct3D constant buffer to a range of push constants in the target enviro...
Definition vkd3d_shader.h:1404
unsigned int register_index
Register index of the Direct3D resource.
Definition vkd3d_shader.h:1411
unsigned int size
Size, in bytes, of the target push constants.
Definition vkd3d_shader.h:1418
unsigned int register_space
Register space of the Direct3D resource.
Definition vkd3d_shader.h:1409
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition vkd3d_shader.h:1413
unsigned int offset
Offset, in bytes, of the target push constants.
Definition vkd3d_shader.h:1416
Describes the mapping of a single resource or resource array to its binding point in the target envir...
Definition vkd3d_shader.h:1316
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition vkd3d_shader.h:1339
unsigned int register_space
Register space of the Direct3D resource.
Definition vkd3d_shader.h:1323
enum vkd3d_shader_descriptor_type type
The type of this descriptor.
Definition vkd3d_shader.h:1318
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition vkd3d_shader.h:1336
unsigned int register_index
Register index of the Direct3D resource.
Definition vkd3d_shader.h:1332
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition vkd3d_shader.h:1334
Definition vkd3d_shader.h:2069
Definition vkd3d_shader.h:2168
Definition vkd3d_shader.h:2162
Definition vkd3d_shader.h:2063
Definition vkd3d_shader.h:2076
Definition vkd3d_shader.h:2175
Definition vkd3d_shader.h:2093
Definition vkd3d_shader.h:2187
Definition vkd3d_shader.h:2119
A chained structure describing the resource-sampler pairs used by a shader.
Definition vkd3d_shader.h:2421
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_COMBINED_RESOURCE_SAMPLER_INFO.
Definition vkd3d_shader.h:2423
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2425
unsigned int combined_sampler_count
The number of resource-sampler pairs in combined_samplers.
Definition vkd3d_shader.h:2430
struct vkd3d_shader_combined_resource_sampler_info * combined_samplers
Pointer to an array of resource-sampler pairs.
Definition vkd3d_shader.h:2428
A chained structure describing how a shader expects denormal floating-point values to be handled.
Definition vkd3d_shader.h:2497
enum vkd3d_shader_denormal_mode f64_denormal_mode
The denormal mode for f64 (double) numbers.
Definition vkd3d_shader.h:2508
enum vkd3d_shader_denormal_mode f32_denormal_mode
The denormal mode for f32 (float) numbers.
Definition vkd3d_shader.h:2506
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DENORMAL_MODE_INFO.
Definition vkd3d_shader.h:2499
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2501
enum vkd3d_shader_denormal_mode f16_denormal_mode
The denormal mode for f16 (half) numbers.
Definition vkd3d_shader.h:2504
A chained structure enumerating the descriptors declared by a shader.
Definition vkd3d_shader.h:2372
enum vkd3d_shader_structure_type type
Input; must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO.
Definition vkd3d_shader.h:2376
const void * next
Input; optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2378
unsigned int descriptor_count
Output; size, in elements, of descriptors.
Definition vkd3d_shader.h:2383
struct vkd3d_shader_descriptor_info * descriptors
Output; returns a pointer to an array of descriptors.
Definition vkd3d_shader.h:2381
A chained structure describing the tessellation information in a hull shader.
Definition vkd3d_shader.h:2441
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2445
enum vkd3d_shader_tessellator_output_primitive output_primitive
The tessellation output primitive.
Definition vkd3d_shader.h:2448
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_HULL_SHADER_TESSELLATION_INFO.
Definition vkd3d_shader.h:2443
enum vkd3d_shader_tessellator_partitioning partitioning
The tessellation partitioning mode.
Definition vkd3d_shader.h:2450
A chained structure containing descriptions of shader inputs and outputs.
Definition vkd3d_shader.h:2851
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2855
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO.
Definition vkd3d_shader.h:2853
struct vkd3d_shader_signature patch_constant
The shader patch constant varyings.
Definition vkd3d_shader.h:2864
struct vkd3d_shader_signature output
The shader output varyings.
Definition vkd3d_shader.h:2861
struct vkd3d_shader_signature input
The shader input varyings.
Definition vkd3d_shader.h:2858
A chained structure describing the thread group size in a compute shader.
Definition vkd3d_shader.h:2461
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_THREAD_GROUP_SIZE_INFO.
Definition vkd3d_shader.h:2463
unsigned int x
The thread group size in the x/y/z direction.
Definition vkd3d_shader.h:2468
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2465
A single shader varying, returned as part of struct vkd3d_shader_signature.
Definition vkd3d_shader.h:2674
unsigned int semantic_index
Semantic index, or 0 if the semantic is not indexed.
Definition vkd3d_shader.h:2678
enum vkd3d_shader_sysval_semantic sysval_semantic
System value semantic.
Definition vkd3d_shader.h:2688
unsigned int stream_index
Stream index of a geometry shader output semantic.
Definition vkd3d_shader.h:2683
unsigned int used_mask
Subset of mask which the shader reads from or writes to.
Definition vkd3d_shader.h:2701
enum vkd3d_shader_component_type component_type
Data type.
Definition vkd3d_shader.h:2690
enum vkd3d_shader_minimum_precision min_precision
Minimum interpolation precision.
Definition vkd3d_shader.h:2703
unsigned int register_index
Register index.
Definition vkd3d_shader.h:2692
unsigned int mask
Mask of the register components allocated to this varying.
Definition vkd3d_shader.h:2694
const char * semantic_name
Semantic name.
Definition vkd3d_shader.h:2676
Description of a shader input or output signature.
Definition vkd3d_shader.h:2714
struct vkd3d_shader_signature_element * elements
Pointer to an array of varyings.
Definition vkd3d_shader.h:2716
unsigned int element_count
Size, in elements, of elements.
Definition vkd3d_shader.h:2718
Definition vkd3d_shader.h:1792
Definition vkd3d_shader.h:1751
Definition vkd3d_shader.h:2037
Definition vkd3d_shader.h:1466
Definition vkd3d_shader.h:1477
Describes the mapping of a single Direct3D UAV counter.
Definition vkd3d_shader.h:1381
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the UAV counter is visible.
Definition vkd3d_shader.h:1390
unsigned int register_space
Register space of the Direct3D UAV descriptor.
Definition vkd3d_shader.h:1386
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition vkd3d_shader.h:1393
unsigned int register_index
Register index of the Direct3D UAV descriptor.
Definition vkd3d_shader.h:1388
A chained structure which describes how output varyings in this shader stage should be mapped to inpu...
Definition vkd3d_shader.h:2913
unsigned int varying_count
The number of registers provided in varying_map.
Definition vkd3d_shader.h:2932
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO.
Definition vkd3d_shader.h:2915
const void * next
Optional pointer to a structure containing further parameters.
Definition vkd3d_shader.h:2917
const struct vkd3d_shader_varying_map * varying_map
A mapping of output varyings in this shader stage to input varyings in the next shader stage.
Definition vkd3d_shader.h:2930
Describes the mapping of a output varying register in a shader stage, to an input varying register in...
Definition vkd3d_shader.h:2874
unsigned int input_register_index
The register index of the input varying to map this register to.
Definition vkd3d_shader.h:2883
unsigned int input_mask
The mask consumed by the destination register.
Definition vkd3d_shader.h:2885
unsigned int output_signature_index
The signature index (in the output signature) of the output varying.
Definition vkd3d_shader.h:2881
Definition vkd3d_shader.h:2204
VKD3D_SHADER_API struct vkd3d_shader_signature_element * vkd3d_shader_find_signature_element(const struct vkd3d_shader_signature *signature, const char *semantic_name, unsigned int semantic_index, unsigned int stream_index)
Find a single element of a parsed input signature.
vkd3d_shader_d3dbc_constant_register
Symbolic register indices for mapping uniform constant register sets in legacy Direct3D bytecode to c...
Definition vkd3d_shader.h:1289
@ VKD3D_SHADER_D3DBC_BOOL_CONSTANT_REGISTER
The boolean constant register set, b# in Direct3D assembly.
Definition vkd3d_shader.h:1295
@ VKD3D_SHADER_D3DBC_FLOAT_CONSTANT_REGISTER
The float constant register set, c# in Direct3D assembly.
Definition vkd3d_shader.h:1291
@ VKD3D_SHADER_D3DBC_INT_CONSTANT_REGISTER
The integer constant register set, i# in Direct3D assembly.
Definition vkd3d_shader.h:1293
vkd3d_shader_compile_option_name
Definition vkd3d_shader.h:319
@ VKD3D_SHADER_COMPILE_OPTION_WARN_IMPLICIT_TRUNCATION
If value is nonzero, emit a compile warning warn when vectors or matrices are truncated in an implici...
Definition vkd3d_shader.h:406
@ VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV
value is a member of enum vkd3d_shader_compile_option_typed_uav.
Definition vkd3d_shader.h:335
@ VKD3D_SHADER_COMPILE_OPTION_BACKWARD_COMPATIBILITY
This option is used to enable various backward compatibility features.
Definition vkd3d_shader.h:364
@ VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER
This option specifies default matrix packing order for HLSL sources.
Definition vkd3d_shader.h:356
@ VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32
Override the denormal mode for f32 (float) numbers.
Definition vkd3d_shader.h:428
@ VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16
Override the denormal mode for f16 (half) numbers.
Definition vkd3d_shader.h:421
@ VKD3D_SHADER_COMPILE_OPTION_CHILD_EFFECT
If value is non-zero compilation will produce a child effect using shared object descriptions,...
Definition vkd3d_shader.h:395
@ VKD3D_SHADER_COMPILE_OPTION_API_VERSION
value is a member of enum vkd3d_shader_api_version.
Definition vkd3d_shader.h:333
@ VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE
If value is nonzero, write the point size for Vulkan tessellation and geometry shaders.
Definition vkd3d_shader.h:347
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV
value is a member of enum vkd3d_shader_compile_option_buffer_uav.
Definition vkd3d_shader.h:329
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN
This option specifies the origin of fragment coordinates for SPIR-V targets.
Definition vkd3d_shader.h:374
@ VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64
Override the denormal mode for f64 (double) numbers.
Definition vkd3d_shader.h:435
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE
This option specifies the shader features available in the target environment.
Definition vkd3d_shader.h:384
@ VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG
If value is nonzero, do not include debug information in the compiled shader.
Definition vkd3d_shader.h:327
@ VKD3D_SHADER_COMPILE_OPTION_INCLUDE_EMPTY_BUFFERS_IN_EFFECTS
If value is nonzero, empty constant buffers descriptions are written out in the output effect binary.
Definition vkd3d_shader.h:414
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING
value is a member of enum vkd3d_shader_compile_option_formatting_flags.
Definition vkd3d_shader.h:331
static uint32_t vkd3d_shader_create_swizzle(enum vkd3d_shader_swizzle_component x, enum vkd3d_shader_swizzle_component y, enum vkd3d_shader_swizzle_component z, enum vkd3d_shader_swizzle_component w)
Build a vkd3d-shader swizzle with the given components.
Definition vkd3d_shader.h:2799
vkd3d_shader_compile_option_formatting_flags
Definition vkd3d_shader.h:180
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES
Emit the signatures when disassembling a shader.
Definition vkd3d_shader.h:192
void(* PFN_vkd3d_shader_free_dxbc)(struct vkd3d_shader_dxbc_desc *dxbc)
Type of vkd3d_shader_free_dxbc().
Definition vkd3d_shader.h:3626
int(* PFN_vkd3d_shader_convert_root_signature)(struct vkd3d_shader_versioned_root_signature_desc *dst, enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src)
Type of vkd3d_shader_convert_root_signature().
Definition vkd3d_shader.h:3599
void(* PFN_vkd3d_shader_build_varying_map)(const struct vkd3d_shader_signature *output_signature, const struct vkd3d_shader_signature *input_signature, unsigned int *count, struct vkd3d_shader_varying_map *varyings)
Type of vkd3d_shader_build_varying_map().
Definition vkd3d_shader.h:3635
vkd3d_shader_resource_data_type
The type of the data contained in a shader resource, returned as part of struct vkd3d_shader_descript...
Definition vkd3d_shader.h:2253
@ VKD3D_SHADER_RESOURCE_DATA_NONE
The descriptor has no relevant data type.
Definition vkd3d_shader.h:2258
@ VKD3D_SHADER_RESOURCE_DATA_DOUBLE
IEEE double-precision floating-point.
Definition vkd3d_shader.h:2272
@ VKD3D_SHADER_RESOURCE_DATA_MIXED
Undefined/type-less.
Definition vkd3d_shader.h:2270
@ VKD3D_SHADER_RESOURCE_DATA_SNORM
Signed normalized integer.
Definition vkd3d_shader.h:2262
@ VKD3D_SHADER_RESOURCE_DATA_CONTINUED
Continuation of the previous component.
Definition vkd3d_shader.h:2278
@ VKD3D_SHADER_RESOURCE_DATA_UINT
Unsigned integer.
Definition vkd3d_shader.h:2266
@ VKD3D_SHADER_RESOURCE_DATA_FLOAT
IEEE single-precision floating-point.
Definition vkd3d_shader.h:2268
@ VKD3D_SHADER_RESOURCE_DATA_UNORM
Unsigned normalized integer.
Definition vkd3d_shader.h:2260
@ VKD3D_SHADER_RESOURCE_DATA_INT
Signed integer.
Definition vkd3d_shader.h:2264
VKD3D_SHADER_API const char * vkd3d_shader_get_version(unsigned int *major, unsigned int *minor)
Returns the current version of this library.
vkd3d_shader_parameter_type
The manner in which a parameter value is provided to the shader, used in struct vkd3d_shader_paramete...
Definition vkd3d_shader.h:668
@ VKD3D_SHADER_PARAMETER_TYPE_BUFFER
The parameter value is provided to the shader as part of a uniform buffer.
Definition vkd3d_shader.h:683
@ VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT
The parameter value is provided to the shader via specialization constants.
Definition vkd3d_shader.h:676
@ VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT
The parameter value is embedded directly in the shader.
Definition vkd3d_shader.h:671
int(* PFN_vkd3d_shader_open_include)(const char *filename, bool local, const char *parent_data, void *context, struct vkd3d_shader_code *out)
Type of a callback function which will be used to open preprocessor includes.
Definition vkd3d_shader.h:1848
vkd3d_shader_compile_option_fragment_coordinate_origin
Determines the origin of fragment coordinates.
Definition vkd3d_shader.h:265
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_LOWER_LEFT
Fragment coordinates originate from the lower-left.
Definition vkd3d_shader.h:271
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_UPPER_LEFT
Fragment coordinates originate from the upper-left.
Definition vkd3d_shader.h:268
VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code)
Free shader code allocated by another vkd3d-shader function, such as vkd3d_shader_compile().
vkd3d_shader_fog_source
The source of the fog varying output by a pre-rasterization shader.
Definition vkd3d_shader.h:635
@ VKD3D_SHADER_FOG_SOURCE_FOG
The source shader is not modified.
Definition vkd3d_shader.h:640
@ VKD3D_SHADER_FOG_SOURCE_FOG_OR_SPECULAR_W
If the source shader has a fog varying, it is not modified.
Definition vkd3d_shader.h:648
@ VKD3D_SHADER_FOG_SOURCE_W
The fog source is the W component of the position output by the vertex shader.
Definition vkd3d_shader.h:658
@ VKD3D_SHADER_FOG_SOURCE_Z
The fog source is the Z component of the position output by the vertex shader.
Definition vkd3d_shader.h:653
vkd3d_shader_parameter_data_type
The format of data provided to the shader, used in struct vkd3d_shader_parameter and struct vkd3d_sha...
Definition vkd3d_shader.h:693
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32_VEC4
The parameter is provided as a 4-dimensional vector of 32-bit floats.
Definition vkd3d_shader.h:705
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32
The parameter is provided as a 32-bit unsigned integer.
Definition vkd3d_shader.h:696
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32
The parameter is provided as a 32-bit float.
Definition vkd3d_shader.h:698
VKD3D_SHADER_API void vkd3d_shader_build_varying_map(const struct vkd3d_shader_signature *output_signature, const struct vkd3d_shader_signature *input_signature, unsigned int *count, struct vkd3d_shader_varying_map *varyings)
Build a mapping of output varyings in a shader stage to input varyings in the following shader stage.
int(* PFN_vkd3d_shader_serialize_dxbc)(size_t section_count, const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages)
Type of vkd3d_shader_serialize_dxbc().
Definition vkd3d_shader.h:3631
void(* PFN_vkd3d_shader_close_include)(const struct vkd3d_shader_code *code, void *context)
Type of a callback function which will be used to close preprocessor includes.
Definition vkd3d_shader.h:1864
vkd3d_shader_descriptor_info_flag
Additional flags describing a shader descriptor, returned as part of struct vkd3d_shader_descriptor_i...
Definition vkd3d_shader.h:2288
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER
The descriptor is a raw (byte-addressed) buffer.
Definition vkd3d_shader.h:2302
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ
The descriptor is a UAV resource, which is read from by the shader.
Definition vkd3d_shader.h:2295
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_ATOMICS
The descriptor is a UAV resource, on which the shader performs atomic ops.
Definition vkd3d_shader.h:2300
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_COUNTER
The descriptor is a UAV resource, whose counter is read from or written to by the shader.
Definition vkd3d_shader.h:2293
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE
The descriptor is a comparison sampler.
Definition vkd3d_shader.h:2297
VKD3D_SHADER_API int vkd3d_shader_serialize_root_signature(const struct vkd3d_shader_versioned_root_signature_desc *root_signature, struct vkd3d_shader_code *dxbc, char **messages)
Convert a structural description of a shader root signature to a byte code format capable of being re...
VKD3D_SHADER_API int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_signature *signature, char **messages)
Read the input signature of a compiled DXBC shader, returning a structural description which can be e...
vkd3d_shader_compile_option_backward_compatibility
Individual options to enable various backward compatibility features.
Definition vkd3d_shader.h:208
@ VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_MAP_SEMANTIC_NAMES
Causes compiler to convert SM1-3 semantics to corresponding System Value semantics,...
Definition vkd3d_shader.h:222
@ VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORMS
Causes all uniform variables in global scope to be const.
Definition vkd3d_shader.h:243
@ VKD3D_SHADER_COMPILE_OPTION_DOUBLE_AS_FLOAT_ALIAS
Causes 'double' to behave as an alias for 'float'.
Definition vkd3d_shader.h:233
@ VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_ALLOW_HALF_GLOBALS
Causes all 'half' globals to be handled as 'float'.
Definition vkd3d_shader.h:254
void(* PFN_vkd3d_shader_free_shader_signature)(struct vkd3d_shader_signature *signature)
Type of vkd3d_shader_free_shader_signature().
Definition vkd3d_shader.h:3616
int(* PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages)
Type of vkd3d_shader_scan().
Definition vkd3d_shader.h:3603
VKD3D_SHADER_API int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages)
Convert a byte code description of a shader root signature to a structural description which can be e...
void(* PFN_vkd3d_shader_free_root_signature)(struct vkd3d_shader_versioned_root_signature_desc *root_signature)
Type of vkd3d_shader_free_root_signature().
Definition vkd3d_shader.h:3591
vkd3d_shader_sysval_semantic
System value semantic, returned as part of struct vkd3d_shader_signature.
Definition vkd3d_shader.h:2600
@ VKD3D_SHADER_SV_VERTEX_ID
Vertex ID; SV_VertexID in Direct3D.
Definition vkd3d_shader.h:2614
@ VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX
Render target layer; SV_RenderTargetArrayIndex in Direct3D.
Definition vkd3d_shader.h:2610
@ VKD3D_SHADER_SV_DEPTH_LESS_EQUAL
Depth, which is guaranteed to be less than or equal to the current depth; SV_DepthLessEqual in Direct...
Definition vkd3d_shader.h:2644
@ VKD3D_SHADER_SV_PRIMITIVE_ID
Primitive ID; SV_PrimitiveID in Direct3D.
Definition vkd3d_shader.h:2616
@ VKD3D_SHADER_SV_COVERAGE
Sample mask; SV_Coverage in Direct3D.
Definition vkd3d_shader.h:2634
@ VKD3D_SHADER_SV_CULL_DISTANCE
Cull distance; SV_CullDistance in Direct3D.
Definition vkd3d_shader.h:2608
@ VKD3D_SHADER_SV_DEPTH
Depth; SV_Depth in Direct3D.
Definition vkd3d_shader.h:2632
@ VKD3D_SHADER_SV_TARGET
Render target; SV_Target in Direct3D.
Definition vkd3d_shader.h:2630
@ VKD3D_SHADER_SV_NONE
No system value.
Definition vkd3d_shader.h:2602
@ VKD3D_SHADER_SV_IS_FRONT_FACE
Whether the triangle is front-facing; SV_IsFrontFace in Direct3D.
Definition vkd3d_shader.h:2620
@ VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX
Viewport index; SV_ViewportArrayIndex in Direct3D.
Definition vkd3d_shader.h:2612
@ VKD3D_SHADER_SV_DEPTH_GREATER_EQUAL
Depth, which is guaranteed to be greater than or equal to the current depth; SV_DepthGreaterEqual in ...
Definition vkd3d_shader.h:2639
@ VKD3D_SHADER_SV_INSTANCE_ID
Instance ID; SV_InstanceID in Direct3D.
Definition vkd3d_shader.h:2618
@ VKD3D_SHADER_SV_CLIP_DISTANCE
Clip distance; SV_ClipDistance in Direct3D.
Definition vkd3d_shader.h:2606
@ VKD3D_SHADER_SV_SAMPLE_INDEX
Sample index; SV_SampleIndex in Direct3D.
Definition vkd3d_shader.h:2622
@ VKD3D_SHADER_SV_STENCIL_REF
Stencil reference; SV_StencilRef in Direct3D.
Definition vkd3d_shader.h:2646
@ VKD3D_SHADER_SV_POSITION
Vertex position; SV_Position in Direct3D.
Definition vkd3d_shader.h:2604
vkd3d_shader_source_type
The format of a shader to be compiled or scanned.
Definition vkd3d_shader.h:1573
@ VKD3D_SHADER_SOURCE_DXBC_DXIL
A 'DirectX Intermediate Language' shader embedded in a DXBC container.
Definition vkd3d_shader.h:1595
@ VKD3D_SHADER_SOURCE_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition vkd3d_shader.h:1590
@ VKD3D_SHADER_SOURCE_HLSL
High-Level Shader Language source code.
Definition vkd3d_shader.h:1585
@ VKD3D_SHADER_SOURCE_FX
Binary format used by Direct3D 9/10.x/11 effects.
Definition vkd3d_shader.h:1600
@ VKD3D_SHADER_SOURCE_TX
A D3DX texture shader.
Definition vkd3d_shader.h:1605
@ VKD3D_SHADER_SOURCE_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition vkd3d_shader.h:1583
@ VKD3D_SHADER_SOURCE_NONE
The shader has no type or is to be ignored.
Definition vkd3d_shader.h:1578
VKD3D_SHADER_API void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature)
Free a structural representation of a shader input signature allocated by vkd3d_shader_parse_input_si...
vkd3d_shader_parse_dxbc_flags
Flags for vkd3d_shader_parse_dxbc().
Definition vkd3d_shader.h:310
@ VKD3D_SHADER_PARSE_DXBC_IGNORE_CHECKSUM
Ignore the checksum and continue parsing even if it is incorrect.
Definition vkd3d_shader.h:313
VKD3D_SHADER_API int vkd3d_shader_serialize_dxbc(size_t section_count, const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages)
Serialize a DXBC description into a blob stored in a vkd3d_shader_code structure.
vkd3d_shader_log_level
Describes the minimum severity of compilation messages returned by vkd3d_shader_compile() and similar...
Definition vkd3d_shader.h:1660
@ VKD3D_SHADER_LOG_NONE
No messages will be returned.
Definition vkd3d_shader.h:1662
@ VKD3D_SHADER_LOG_ERROR
Only fatal errors which prevent successful compilation will be returned.
Definition vkd3d_shader.h:1664
@ VKD3D_SHADER_LOG_WARNING
Non-fatal warnings and fatal errors will be returned.
Definition vkd3d_shader.h:1666
@ VKD3D_SHADER_LOG_INFO
All messages, including general informational messages, will be returned.
Definition vkd3d_shader.h:1670
VKD3D_SHADER_API int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char **messages)
Parse shader source code or byte code, returning various types of requested information.
vkd3d_shader_fog_fragment_mode
The factor used to interpolate the fragment output colour with fog.
Definition vkd3d_shader.h:573
@ VKD3D_SHADER_FOG_FRAGMENT_EXP2
The fog interpolation factor is 2^-((k * c)²).
Definition vkd3d_shader.h:605
@ VKD3D_SHADER_FOG_FRAGMENT_NONE
No fog interpolation is applied; the output colour is passed through unmodified.
Definition vkd3d_shader.h:579
@ VKD3D_SHADER_FOG_FRAGMENT_EXP
The fog interpolation factor is 2^-(k * c).
Definition vkd3d_shader.h:592
@ VKD3D_SHADER_FOG_FRAGMENT_LINEAR
The fog interpolation factor is (E - c) * k.
Definition vkd3d_shader.h:619
vkd3d_shader_structure_type
The type of a chained structure.
Definition vkd3d_shader.h:73
@ VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO
The structure is a vkd3d_shader_transform_feedback_info structure.
Definition vkd3d_shader.h:85
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_COMBINED_RESOURCE_SAMPLER_INFO
The structure is a vkd3d_shader_scan_combined_resource_sampler_info structure.
Definition vkd3d_shader.h:116
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DENORMAL_MODE_INFO
The structure is a vkd3d_shader_scan_denormal_mode_info structure.
Definition vkd3d_shader.h:141
@ VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO
The structure is a vkd3d_shader_compile_info structure.
Definition vkd3d_shader.h:75
@ VKD3D_SHADER_STRUCTURE_TYPE_D3DBC_SOURCE_INFO
The structure is a vkd3d_shader_d3dbc_source_info structure.
Definition vkd3d_shader.h:136
@ VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO
The structure is a vkd3d_shader_parameter_info structure.
Definition vkd3d_shader.h:121
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO
The structure is a vkd3d_shader_scan_descriptor_info structure.
Definition vkd3d_shader.h:79
@ VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_DOMAIN_SHADER_TARGET_INFO
The structure is a vkd3d_shader_spirv_domain_shader_target_info structure.
Definition vkd3d_shader.h:81
@ VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO
The structure is a vkd3d_shader_descriptor_offset_info structure.
Definition vkd3d_shader.h:101
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO
The structure is a vkd3d_shader_scan_signature_info structure.
Definition vkd3d_shader.h:106
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_THREAD_GROUP_SIZE_INFO
The structure is a vkd3d_shader_scan_thread_group_size_info structure.
Definition vkd3d_shader.h:131
@ VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO
The structure is a vkd3d_shader_preprocess_info structure.
Definition vkd3d_shader.h:96
@ VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO
The structure is a vkd3d_shader_interface_info structure.
Definition vkd3d_shader.h:77
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_HULL_SHADER_TESSELLATION_INFO
The structure is a vkd3d_shader_scan_hull_shader_tessellation_info structure.
Definition vkd3d_shader.h:126
@ VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO
The structure is a vkd3d_shader_varying_map_info structure.
Definition vkd3d_shader.h:111
@ VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO
The structure is a vkd3d_shader_spirv_target_info structure.
Definition vkd3d_shader.h:83
@ VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO
The structure is a vkd3d_shader_hlsl_source_info structure.
Definition vkd3d_shader.h:91
vkd3d_shader_visibility
Describes which shader stages a resource is visible to.
Definition vkd3d_shader.h:458
@ VKD3D_SHADER_VISIBILITY_DOMAIN
The resource is visible only to the domain shader.
Definition vkd3d_shader.h:466
@ VKD3D_SHADER_VISIBILITY_COMPUTE
The resource is visible only to the compute shader.
Definition vkd3d_shader.h:473
@ VKD3D_SHADER_VISIBILITY_PIXEL
The resource is visible only to the pixel shader.
Definition vkd3d_shader.h:470
@ VKD3D_SHADER_VISIBILITY_ALL
The resource is visible to all shader stages.
Definition vkd3d_shader.h:460
@ VKD3D_SHADER_VISIBILITY_GEOMETRY
The resource is visible only to the geometry shader.
Definition vkd3d_shader.h:468
@ VKD3D_SHADER_VISIBILITY_VERTEX
The resource is visible only to the vertex shader.
Definition vkd3d_shader.h:462
@ VKD3D_SHADER_VISIBILITY_HULL
The resource is visible only to the hull shader.
Definition vkd3d_shader.h:464
VKD3D_SHADER_API void vkd3d_shader_free_scan_combined_resource_sampler_info(struct vkd3d_shader_scan_combined_resource_sampler_info *info)
Free members of struct vkd3d_shader_scan_combined_resource_sampler_info allocated by vkd3d_shader_sca...
vkd3d_shader_spirv_extension
Definition vkd3d_shader.h:1732
@ VKD3D_SHADER_SPIRV_EXTENSION_KHR_FLOAT_CONTROLS
Definition vkd3d_shader.h:1744
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_FRAGMENT_SHADER_INTERLOCK
Definition vkd3d_shader.h:1742
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_STENCIL_EXPORT
Definition vkd3d_shader.h:1738
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER
Definition vkd3d_shader.h:1740
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_DESCRIPTOR_INDEXING
Definition vkd3d_shader.h:1736
vkd3d_shader_api_version
Definition vkd3d_shader.h:44
vkd3d_shader_component_type
Data type of a shader varying, returned as part of struct vkd3d_shader_signature_element.
Definition vkd3d_shader.h:2571
@ VKD3D_SHADER_COMPONENT_INT
32-bit signed integer.
Definition vkd3d_shader.h:2577
@ VKD3D_SHADER_COMPONENT_UINT
32-bit unsigned integer.
Definition vkd3d_shader.h:2575
@ VKD3D_SHADER_COMPONENT_FLOAT16
16-bit IEEE floating-point.
Definition vkd3d_shader.h:2589
@ VKD3D_SHADER_COMPONENT_UINT16
16-bit unsigned integer.
Definition vkd3d_shader.h:2591
@ VKD3D_SHADER_COMPONENT_INT16
16-bit signed integer.
Definition vkd3d_shader.h:2593
@ VKD3D_SHADER_COMPONENT_DOUBLE
64-bit IEEE floating-point.
Definition vkd3d_shader.h:2583
@ VKD3D_SHADER_COMPONENT_UINT64
64-bit unsigned integer.
Definition vkd3d_shader.h:2585
@ VKD3D_SHADER_COMPONENT_FLOAT
32-bit IEEE floating-point.
Definition vkd3d_shader.h:2579
@ VKD3D_SHADER_COMPONENT_VOID
The varying has no type.
Definition vkd3d_shader.h:2573
@ VKD3D_SHADER_COMPONENT_INT64
64-bit signed integer.
Definition vkd3d_shader.h:2587
@ VKD3D_SHADER_COMPONENT_BOOL
Boolean.
Definition vkd3d_shader.h:2581
vkd3d_shader_descriptor_type
The type of a shader resource descriptor.
Definition vkd3d_shader.h:502
@ VKD3D_SHADER_DESCRIPTOR_TYPE_UAV
The descriptor is an unordered access view.
Definition vkd3d_shader.h:512
@ VKD3D_SHADER_DESCRIPTOR_TYPE_CBV
The descriptor is a constant buffer view.
Definition vkd3d_shader.h:517
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
The descriptor is a sampler.
Definition vkd3d_shader.h:522
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
The descriptor is a shader resource view.
Definition vkd3d_shader.h:507
#define VKD3D_SHADER_SWIZZLE_MASK
A mask selecting one component from a vkd3d-shader swizzle.
Definition vkd3d_shader.h:2776
vkd3d_shader_resource_type
The type of a shader resource, returned as part of struct vkd3d_shader_descriptor_info.
Definition vkd3d_shader.h:2218
@ VKD3D_SHADER_RESOURCE_NONE
The type is invalid or not applicable for this descriptor.
Definition vkd3d_shader.h:2223
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DARRAY
2-dimensional array texture.
Definition vkd3d_shader.h:2239
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMS
Multisampled 2-dimensional texture.
Definition vkd3d_shader.h:2231
@ VKD3D_SHADER_RESOURCE_TEXTURE_3D
3-dimensional texture.
Definition vkd3d_shader.h:2233
@ VKD3D_SHADER_RESOURCE_TEXTURE_1DARRAY
1-dimensional array texture.
Definition vkd3d_shader.h:2237
@ VKD3D_SHADER_RESOURCE_BUFFER
Dimensionless buffer.
Definition vkd3d_shader.h:2225
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBE
Cubemap texture.
Definition vkd3d_shader.h:2235
@ VKD3D_SHADER_RESOURCE_TEXTURE_1D
1-dimensional texture.
Definition vkd3d_shader.h:2227
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
Cubemap array texture.
Definition vkd3d_shader.h:2243
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
Multisampled 2-dimensional array texture.
Definition vkd3d_shader.h:2241
@ VKD3D_SHADER_RESOURCE_TEXTURE_2D
2-dimensional texture.
Definition vkd3d_shader.h:2229
VKD3D_SHADER_API void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc)
Free the contents of a vkd3d_shader_dxbc_desc structure allocated by another vkd3d-shader function,...
VKD3D_SHADER_API enum vkd3d_shader_source_type * vkd3d_shader_get_supported_source_types(unsigned int *count)
Returns the source types supported, with any target type, by vkd3d_shader_compile().
vkd3d_shader_denormal_mode
Specifies how denormal floating-point numbers should be treated.
Definition vkd3d_shader.h:2477
@ VKD3D_SHADER_DENORMAL_MODE_FLUSH_TO_ZERO
Denormal values should be flushed to zero.
Definition vkd3d_shader.h:2483
@ VKD3D_SHADER_DENORMAL_MODE_PRESERVE
Denormal values should be preserved.
Definition vkd3d_shader.h:2481
@ VKD3D_SHADER_DENORMAL_MODE_ANY
No particular denormal mode is requested.
Definition vkd3d_shader.h:2479
VKD3D_SHADER_API void vkd3d_shader_set_log_callback(PFN_vkd3d_log callback)
Set a callback to be called when vkd3d-shader outputs debug logging.
int(* PFN_vkd3d_shader_parse_root_signature)(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages)
Type of vkd3d_shader_parse_root_signature().
Definition vkd3d_shader.h:3588
VKD3D_SHADER_API void vkd3d_shader_free_scan_signature_info(struct vkd3d_shader_scan_signature_info *info)
Free members of struct vkd3d_shader_scan_signature_info allocated by vkd3d_shader_scan().
int(* PFN_vkd3d_shader_serialize_root_signature)(const struct vkd3d_shader_versioned_root_signature_desc *root_signature, struct vkd3d_shader_code *dxbc, char **messages)
Type of vkd3d_shader_serialize_root_signature().
Definition vkd3d_shader.h:3594
vkd3d_shader_compile_option_typed_uav
Determines how typed UAVs are declared.
Definition vkd3d_shader.h:167
@ VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV_READ_FORMAT_UNKNOWN
Use Unknown format for UAVs which are read from.
Definition vkd3d_shader.h:174
@ VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV_READ_FORMAT_R32
Use R32(u)i/R32f format for UAVs which are read from.
Definition vkd3d_shader.h:169
int(* PFN_vkd3d_shader_parse_dxbc)(const struct vkd3d_shader_code *dxbc, uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages)
Type of vkd3d_shader_parse_dxbc().
Definition vkd3d_shader.h:3628
VKD3D_SHADER_API int vkd3d_shader_parse_dxbc(const struct vkd3d_shader_code *dxbc, uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages)
Parse a DXBC blob contained in a vkd3d_shader_code structure.
vkd3d_shader_swizzle_component
Possible values for a single component of a vkd3d-shader swizzle.
Definition vkd3d_shader.h:2723
VKD3D_SHADER_API int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, char **messages)
Transform a form of GPU shader source code or byte code into another form of source code or byte code...
VKD3D_SHADER_API int vkd3d_shader_convert_root_signature(struct vkd3d_shader_versioned_root_signature_desc *dst, enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src)
Convert a structural representation of a root signature to a different version of structural represen...
int(* PFN_vkd3d_shader_compile)(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, char **messages)
Type of vkd3d_shader_compile().
Definition vkd3d_shader.h:3580
void(* PFN_vkd3d_shader_free_scan_descriptor_info)(struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info)
Type of vkd3d_shader_free_scan_descriptor_info().
Definition vkd3d_shader.h:3605
vkd3d_shader_descriptor_range_flags
Definition vkd3d_shader.h:2139
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS
Definition vkd3d_shader.h:2146
VKD3D_SHADER_API int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, char **messages)
Preprocess the given source code.
#define VKD3D_SHADER_SWIZZLE_SHIFT(idx)
The offset, in bits, of the nth parameter of a vkd3d-shader swizzle.
Definition vkd3d_shader.h:2778
void(* PFN_vkd3d_shader_free_messages)(char *messages)
Type of vkd3d_shader_free_messages().
Definition vkd3d_shader.h:3583
VKD3D_SHADER_API enum vkd3d_shader_target_type * vkd3d_shader_get_supported_target_types(enum vkd3d_shader_source_type source_type, unsigned int *count)
Returns the target types supported, with the given source type, by vkd3d_shader_compile().
vkd3d_shader_minimum_precision
Minimum interpolation precision of a shader varying, returned as part of struct vkd3d_shader_signatur...
Definition vkd3d_shader.h:2656
@ VKD3D_SHADER_MINIMUM_PRECISION_UINT_16
16-bit unsigned integer.
Definition vkd3d_shader.h:2665
@ VKD3D_SHADER_MINIMUM_PRECISION_FIXED_8_2
10-bit fixed point (2 integer and 8 fractional bits).
Definition vkd3d_shader.h:2661
@ VKD3D_SHADER_MINIMUM_PRECISION_FLOAT_16
16-bit floating-point.
Definition vkd3d_shader.h:2659
@ VKD3D_SHADER_MINIMUM_PRECISION_INT_16
16-bit signed integer.
Definition vkd3d_shader.h:2663
void(* PFN_vkd3d_shader_free_scan_signature_info)(struct vkd3d_shader_scan_signature_info *info)
Type of vkd3d_shader_free_scan_signature_info().
Definition vkd3d_shader.h:3639
int(* PFN_vkd3d_shader_parse_input_signature)(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_signature *signature, char **messages)
Type of vkd3d_shader_parse_input_signature().
Definition vkd3d_shader.h:3609
VKD3D_SHADER_API void vkd3d_shader_free_scan_descriptor_info(struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info)
Free members of struct vkd3d_shader_scan_descriptor_info() allocated by vkd3d_shader_scan().
void(* PFN_vkd3d_shader_preprocess)(struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, char **messages)
Type of vkd3d_shader_preprocess().
Definition vkd3d_shader.h:3619
vkd3d_shader_target_type
The output format of a compiled shader.
Definition vkd3d_shader.h:1612
@ VKD3D_SHADER_TARGET_SPIRV_BINARY
A SPIR-V shader in binary form.
Definition vkd3d_shader.h:1622
@ VKD3D_SHADER_TARGET_D3D_ASM
Direct3D shader assembly.
Definition vkd3d_shader.h:1627
@ VKD3D_SHADER_TARGET_NONE
The shader has no type or is to be ignored.
Definition vkd3d_shader.h:1617
@ VKD3D_SHADER_TARGET_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition vkd3d_shader.h:1637
@ VKD3D_SHADER_TARGET_GLSL
An 'OpenGL Shading Language' shader.
Definition vkd3d_shader.h:1641
@ VKD3D_SHADER_TARGET_MSL
A 'Metal Shading Language' shader.
Definition vkd3d_shader.h:1650
@ VKD3D_SHADER_TARGET_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition vkd3d_shader.h:1632
@ VKD3D_SHADER_TARGET_FX
Binary format used by Direct3D 9/10.x/11 effects profiles.
Definition vkd3d_shader.h:1646
void(* PFN_vkd3d_shader_free_shader_code)(struct vkd3d_shader_code *code)
Type of vkd3d_shader_free_shader_code().
Definition vkd3d_shader.h:3585
vkd3d_shader_compile_option_pack_matrix_order
Determines how matrices are stored.
Definition vkd3d_shader.h:199
vkd3d_shader_spirv_environment
Definition vkd3d_shader.h:1721
@ VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_1
Definition vkd3d_shader.h:1726
vkd3d_shader_compile_option_feature_flags
Advertises feature availability.
Definition vkd3d_shader.h:278
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_WAVE_OPS
The SPIR-V target environment supports wave operations.
Definition vkd3d_shader.h:295
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64
The SPIR-V target environment supports 64-bit integer types.
Definition vkd3d_shader.h:282
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64
The SPIR-V target environment supports 64-bit floating-point types.
Definition vkd3d_shader.h:286
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY
The SPIR-V target environment supports zero-initializing workgroup memory.
Definition vkd3d_shader.h:299
void(* PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback)
Type of vkd3d_shader_set_log_callback().
Definition vkd3d_shader.h:3623
vkd3d_shader_parameter_name
Names a specific shader parameter, used in struct vkd3d_shader_parameter and struct vkd3d_shader_para...
Definition vkd3d_shader.h:715
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SPRITE
Whether texture coordinate inputs should take their values from the point coordinate.
Definition vkd3d_shader.h:925
@ VKD3D_SHADER_PARAMETER_NAME_FOG_SOURCE
Fog source.
Definition vkd3d_shader.h:1016
@ VKD3D_SHADER_PARAMETER_NAME_RASTERIZER_SAMPLE_COUNT
The sample count of the framebuffer, as returned by the HLSL function GetRenderTargetSampleCount() or...
Definition vkd3d_shader.h:729
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC
Alpha test comparison function.
Definition vkd3d_shader.h:754
@ VKD3D_SHADER_PARAMETER_NAME_FOG_SCALE
Scale value for fog.
Definition vkd3d_shader.h:992
@ VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_0
Bump-mapping matrix.
Definition vkd3d_shader.h:1040
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF
Alpha test reference value.
Definition vkd3d_shader.h:764
@ VKD3D_SHADER_PARAMETER_NAME_FOG_END
End coordinate for linear fog.
Definition vkd3d_shader.h:979
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MAX
Maximum point size.
Definition vkd3d_shader.h:892
@ VKD3D_SHADER_PARAMETER_NAME_FOG_FRAGMENT_MODE
Fog mode used in fragment shaders.
Definition vkd3d_shader.h:953
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MIN
Minimum point size.
Definition vkd3d_shader.h:882
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE
Point size.
Definition vkd3d_shader.h:859
@ VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_0
Clip plane values.
Definition vkd3d_shader.h:833
@ VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION
Whether to use flat interpolation for fragment shader colour inputs.
Definition vkd3d_shader.h:788
@ VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_MASK
A mask of enabled clip planes.
Definition vkd3d_shader.h:816
@ VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_0
Bump-mapping luminance offset.
Definition vkd3d_shader.h:1088
@ VKD3D_SHADER_PARAMETER_NAME_FOG_COLOUR
Fog colour.
Definition vkd3d_shader.h:966
@ VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_0
Bump-mapping luminance scale factor.
Definition vkd3d_shader.h:1064
@ VKD3D_SHADER_PARAMETER_NAME_PROJECTED_TEXTURE_MASK
A mask of projected textures.
Definition vkd3d_shader.h:1112
VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages)
Free shader messages allocated by another vkd3d-shader function, such as vkd3d_shader_compile().
void(* PFN_vkd3d_shader_free_scan_combined_resource_sampler_info)(struct vkd3d_shader_scan_combined_resource_sampler_info *info)
Type of vkd3d_shader_free_scan_combined_resource_sampler_info().
Definition vkd3d_shader.h:3642
VKD3D_SHADER_API void vkd3d_shader_free_root_signature(struct vkd3d_shader_versioned_root_signature_desc *root_signature)
Free a structural representation of a shader root signature allocated by vkd3d_shader_convert_root_si...
vkd3d_shader_compile_option_buffer_uav
Determines how buffer UAVs are stored.
Definition vkd3d_shader.h:153
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_TEXEL_BUFFER
Use buffer textures for buffer UAVs.
Definition vkd3d_shader.h:155
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_BUFFER
Use storage buffers for buffer UAVs.
Definition vkd3d_shader.h:157
This file contains definitions for basic types used by vkd3d libraries.