vkd3d  1.19
The vkd3d 3D Graphics Library
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
28 extern "C" {
29 #endif /* __cplusplus */
30 
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 
66  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
67 };
68 
71 {
84 
135 
136  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STRUCTURE_TYPE),
137 };
138 
146 {
151 
152  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV),
153 };
154 
160 {
168 
169  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV),
170 };
171 
173 {
174  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_NONE = 0x00000000,
175  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR = 0x00000001,
176  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT = 0x00000002,
177  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_OFFSETS = 0x00000004,
178  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_HEADER = 0x00000008,
179  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_RAW_IDS = 0x00000010,
186 
187  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FORMATTING_FLAGS),
188 };
189 
192 {
193  VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ROW_MAJOR = 0x00000001,
194  VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_COLUMN_MAJOR = 0x00000002,
195 
196  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER),
197 };
198 
201 {
225 
227 };
228 
235 {
242 
244 };
245 
248 {
270 
271  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLAGS),
272 };
273 
280 {
284 
285  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARSE_DXBC_FLAGS),
286 };
287 
289 {
385 
386  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_NAME),
387 };
388 
395 {
402  unsigned int value;
403 };
404 
407 {
420 
423 
424  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_VISIBILITY),
425 };
426 
429 {
444  const void *code;
446  size_t size;
447 };
448 
451 {
472 
473  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_TYPE),
474 };
475 
481 {
486  unsigned int set;
488  unsigned int binding;
494  unsigned int count;
495 };
496 
497 enum vkd3d_shader_binding_flag
498 {
499  VKD3D_SHADER_BINDING_FLAG_BUFFER = 0x00000001,
500  VKD3D_SHADER_BINDING_FLAG_IMAGE = 0x00000002,
501 
502  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_BINDING_FLAG),
503 };
504 
522 {
569 
570  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FOG_FRAGMENT_MODE),
571 };
572 
584 {
608 
609  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FOG_SOURCE),
610 };
611 
617 {
618  VKD3D_SHADER_PARAMETER_TYPE_UNKNOWN,
633 
634  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_TYPE),
635 };
636 
642 {
643  VKD3D_SHADER_PARAMETER_DATA_TYPE_UNKNOWN,
655 
656  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_DATA_TYPE),
657 };
658 
664 {
665  VKD3D_SHADER_PARAMETER_NAME_UNKNOWN,
783  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_1,
784  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_2,
785  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_3,
786  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_4,
787  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_5,
788  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_6,
789  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_7,
990  VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_1,
991  VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_2,
992  VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_3,
993  VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_4,
994  VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_5,
1014  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_1,
1015  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_2,
1016  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_3,
1017  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_4,
1018  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_5,
1038  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_1,
1039  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_2,
1040  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_3,
1041  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_4,
1042  VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_5,
1062 
1063  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_NAME),
1064 };
1065 
1071 {
1072  union
1073  {
1078  uint32_t u32;
1085  float f32;
1086  } u;
1087 };
1088 
1096 {
1097  union
1098  {
1103  uint32_t u32;
1108  float f32;
1115  float f32_vec4[4];
1116  void *_pointer_pad;
1117  uint32_t _pad[4];
1118  } u;
1119 };
1120 
1126 {
1134  uint32_t id;
1135 };
1136 
1142 {
1147  unsigned int set;
1149  unsigned int binding;
1151  uint32_t offset;
1152 };
1153 
1167 {
1168  enum vkd3d_shader_parameter_name name;
1169  enum vkd3d_shader_parameter_type type;
1170  enum vkd3d_shader_parameter_data_type data_type;
1171  union
1172  {
1173  struct vkd3d_shader_parameter_immediate_constant immediate_constant;
1174  struct vkd3d_shader_parameter_specialization_constant specialization_constant;
1175  } u;
1176 };
1177 
1196 {
1206  union
1207  {
1223  void *_pointer_pad;
1224  uint32_t _pad[4];
1225  } u;
1226 };
1227 
1238 {
1245 
1246  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_D3DBC_CONSTANT_REGISTER),
1247 };
1248 
1265 {
1272  unsigned int register_space;
1281  unsigned int register_index;
1285  unsigned int flags;
1286 
1289 };
1290 
1291 #define VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u
1292 
1300 {
1305  unsigned int resource_space;
1307  unsigned int resource_index;
1312  unsigned int sampler_space;
1314  unsigned int sampler_index;
1318  unsigned int flags;
1319 
1322 };
1323 
1330 {
1335  unsigned int register_space;
1337  unsigned int register_index;
1340 
1343  unsigned int offset;
1344 };
1345 
1353 {
1358  unsigned int register_space;
1360  unsigned int register_index;
1363 
1365  unsigned int offset;
1367  unsigned int size;
1368 };
1369 
1387 {
1391  const void *next;
1392 
1396  unsigned int binding_count;
1397 
1402 
1407 
1411  unsigned int uav_counter_count;
1412 };
1413 
1415 {
1416  unsigned int stream_index;
1417  const char *semantic_name;
1418  unsigned int semantic_index;
1419  uint8_t component_index;
1420  uint8_t component_count;
1421  uint8_t output_slot;
1422 };
1423 
1424 /* Extends vkd3d_shader_interface_info. */
1426 {
1427  enum vkd3d_shader_structure_type type;
1428  const void *next;
1429 
1430  const struct vkd3d_shader_transform_feedback_element *elements;
1431  unsigned int element_count;
1432  const unsigned int *buffer_strides;
1433  unsigned int buffer_stride_count;
1434 };
1435 
1437 {
1438  unsigned int static_offset;
1439  unsigned int dynamic_offset_index;
1440 };
1441 
1454 {
1458  const void *next;
1459 
1468 
1511 
1518 };
1519 
1522 {
1555 
1556  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SOURCE_TYPE),
1557 };
1558 
1561 {
1572  VKD3D_SHADER_TARGET_SPIRV_TEXT,
1600 
1601  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TARGET_TYPE),
1602 };
1603 
1609 {
1620 
1621  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_LOG_LEVEL),
1622 };
1623 
1628 {
1636  const void *next;
1637 
1639  struct vkd3d_shader_code source;
1640 
1645 
1658  unsigned int option_count;
1659 
1666  const char *source_name;
1667 };
1668 
1670 {
1671  VKD3D_SHADER_SPIRV_ENVIRONMENT_NONE,
1672  VKD3D_SHADER_SPIRV_ENVIRONMENT_OPENGL_4_5,
1673  VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0, /* default target */
1676 
1677  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_ENVIRONMENT),
1678 };
1679 
1681 {
1682  VKD3D_SHADER_SPIRV_EXTENSION_NONE,
1683  VKD3D_SHADER_SPIRV_EXTENSION_EXT_DEMOTE_TO_HELPER_INVOCATION,
1692 
1693  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_EXTENSION),
1694 };
1695 
1696 /* Extends vkd3d_shader_compile_info. */
1698 {
1699  enum vkd3d_shader_structure_type type;
1700  const void *next;
1701 
1702  const char *entry_point; /* "main" if NULL. */
1703 
1704  enum vkd3d_shader_spirv_environment environment;
1705 
1706  const enum vkd3d_shader_spirv_extension *extensions;
1707  unsigned int extension_count;
1708 
1709  const struct vkd3d_shader_parameter *parameters;
1710  unsigned int parameter_count;
1711 
1712  bool dual_source_blending;
1713  const unsigned int *output_swizzles;
1714  unsigned int output_swizzle_count;
1715 };
1716 
1717 enum vkd3d_shader_tessellator_output_primitive
1718 {
1719  VKD3D_SHADER_TESSELLATOR_OUTPUT_POINT = 0x1,
1720  VKD3D_SHADER_TESSELLATOR_OUTPUT_LINE = 0x2,
1721  VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CW = 0x3,
1722  VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 0x4,
1723 
1724  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_OUTPUT_PRIMITIVE),
1725 };
1726 
1727 enum vkd3d_shader_tessellator_partitioning
1728 {
1729  VKD3D_SHADER_TESSELLATOR_PARTITIONING_INTEGER = 0x1,
1730  VKD3D_SHADER_TESSELLATOR_PARTITIONING_POW2 = 0x2,
1731  VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 0x3,
1732  VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 0x4,
1733 
1734  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_PARTITIONING),
1735 };
1736 
1737 /* Extends vkd3d_shader_spirv_target_info. */
1739 {
1740  enum vkd3d_shader_structure_type type;
1741  const void *next;
1742 
1743  enum vkd3d_shader_tessellator_output_primitive output_primitive;
1744  enum vkd3d_shader_tessellator_partitioning partitioning;
1745 };
1746 
1752 {
1758  const char *name;
1764  const char *value;
1765 };
1766 
1795 typedef int (*PFN_vkd3d_shader_open_include)(const char *filename, bool local,
1796  const char *parent_data, void *context, struct vkd3d_shader_code *out);
1811 typedef void (*PFN_vkd3d_shader_close_include)(const struct vkd3d_shader_code *code, void *context);
1812 
1825 {
1829  const void *next;
1830 
1841  unsigned int macro_count;
1842 
1871 };
1872 
1885 {
1889  const void *next;
1890 
1897  const char *entry_point;
1898  struct vkd3d_shader_code secondary_code;
1903  const char *profile;
1904 };
1905 
1906 /* root signature 1.0 */
1907 enum vkd3d_shader_filter
1908 {
1909  VKD3D_SHADER_FILTER_MIN_MAG_MIP_POINT = 0x000,
1910  VKD3D_SHADER_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x001,
1911  VKD3D_SHADER_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x004,
1912  VKD3D_SHADER_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x005,
1913  VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x010,
1914  VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x011,
1915  VKD3D_SHADER_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x014,
1916  VKD3D_SHADER_FILTER_MIN_MAG_MIP_LINEAR = 0x015,
1917  VKD3D_SHADER_FILTER_ANISOTROPIC = 0x055,
1918  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x080,
1919  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x081,
1920  VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x084,
1921  VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x085,
1922  VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x090,
1923  VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x091,
1924  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x094,
1925  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x095,
1926  VKD3D_SHADER_FILTER_COMPARISON_ANISOTROPIC = 0x0d5,
1927  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
1928  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
1929  VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
1930  VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
1931  VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
1932  VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
1933  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
1934  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
1935  VKD3D_SHADER_FILTER_MINIMUM_ANISOTROPIC = 0x155,
1936  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
1937  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
1938  VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
1939  VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
1940  VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
1941  VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
1942  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
1943  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
1944  VKD3D_SHADER_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
1945 
1946  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FILTER),
1947 };
1948 
1949 enum vkd3d_shader_texture_address_mode
1950 {
1951  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_WRAP = 0x1,
1952  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR = 0x2,
1953  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_CLAMP = 0x3,
1954  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_BORDER = 0x4,
1955  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 0x5,
1956 
1957  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TEXTURE_ADDRESS_MODE),
1958 };
1959 
1960 enum vkd3d_shader_comparison_func
1961 {
1962  VKD3D_SHADER_COMPARISON_FUNC_NEVER = 0x1,
1963  VKD3D_SHADER_COMPARISON_FUNC_LESS = 0x2,
1964  VKD3D_SHADER_COMPARISON_FUNC_EQUAL = 0x3,
1965  VKD3D_SHADER_COMPARISON_FUNC_LESS_EQUAL = 0x4,
1966  VKD3D_SHADER_COMPARISON_FUNC_GREATER = 0x5,
1967  VKD3D_SHADER_COMPARISON_FUNC_NOT_EQUAL = 0x6,
1968  VKD3D_SHADER_COMPARISON_FUNC_GREATER_EQUAL = 0x7,
1969  VKD3D_SHADER_COMPARISON_FUNC_ALWAYS = 0x8,
1970 
1971  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPARISON_FUNC),
1972 };
1973 
1974 enum vkd3d_shader_static_border_colour
1975 {
1976  VKD3D_SHADER_STATIC_BORDER_COLOUR_TRANSPARENT_BLACK = 0x0,
1977  VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_BLACK = 0x1,
1978  VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_WHITE = 0x2,
1979 
1980  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STATIC_BORDER_COLOUR),
1981 };
1982 
1984 {
1985  enum vkd3d_shader_filter filter;
1986  enum vkd3d_shader_texture_address_mode address_u;
1987  enum vkd3d_shader_texture_address_mode address_v;
1988  enum vkd3d_shader_texture_address_mode address_w;
1989  float mip_lod_bias;
1990  unsigned int max_anisotropy;
1991  enum vkd3d_shader_comparison_func comparison_func;
1992  enum vkd3d_shader_static_border_colour border_colour;
1993  float min_lod;
1994  float max_lod;
1995  unsigned int shader_register;
1996  unsigned int register_space;
1997  enum vkd3d_shader_visibility shader_visibility;
1998 };
1999 
2001 {
2002  enum vkd3d_shader_descriptor_type range_type;
2003  unsigned int descriptor_count;
2004  unsigned int base_shader_register;
2005  unsigned int register_space;
2006  unsigned int descriptor_table_offset;
2007 };
2008 
2010 {
2011  unsigned int descriptor_range_count;
2012  const struct vkd3d_shader_descriptor_range *descriptor_ranges;
2013 };
2014 
2016 {
2017  unsigned int shader_register;
2018  unsigned int register_space;
2019  unsigned int value_count;
2020 };
2021 
2023 {
2024  unsigned int shader_register;
2025  unsigned int register_space;
2026 };
2027 
2028 enum vkd3d_shader_root_parameter_type
2029 {
2030  VKD3D_SHADER_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0x0,
2031  VKD3D_SHADER_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 0x1,
2032  VKD3D_SHADER_ROOT_PARAMETER_TYPE_CBV = 0x2,
2033  VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV = 0x3,
2034  VKD3D_SHADER_ROOT_PARAMETER_TYPE_UAV = 0x4,
2035 
2036  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_PARAMETER_TYPE),
2037 };
2038 
2040 {
2041  enum vkd3d_shader_root_parameter_type parameter_type;
2042  union
2043  {
2044  struct vkd3d_shader_root_descriptor_table descriptor_table;
2045  struct vkd3d_shader_root_constants constants;
2046  struct vkd3d_shader_root_descriptor descriptor;
2047  } u;
2048  enum vkd3d_shader_visibility shader_visibility;
2049 };
2050 
2051 enum vkd3d_shader_root_signature_flags
2052 {
2053  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_NONE = 0x00,
2054  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x01,
2055  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x02,
2056  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x04,
2057  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x08,
2058  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2059  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2060  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2061 
2062  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_FLAGS),
2063 };
2064 
2066 {
2067  unsigned int parameter_count;
2068  const struct vkd3d_shader_root_parameter *parameters;
2069  unsigned int static_sampler_count;
2070  const struct vkd3d_shader_static_sampler_desc *static_samplers;
2071  enum vkd3d_shader_root_signature_flags flags;
2072 };
2073 
2074 /* root signature 1.1 */
2075 enum vkd3d_shader_root_descriptor_flags
2076 {
2077  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2078  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2079  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2080  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2081 
2082  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_DESCRIPTOR_FLAGS),
2083 };
2084 
2086 {
2087  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2088  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2089  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2090  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2091  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2094 
2095  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_RANGE_FLAGS),
2096 };
2097 
2099 {
2100  enum vkd3d_shader_descriptor_type range_type;
2101  unsigned int descriptor_count;
2102  unsigned int base_shader_register;
2103  unsigned int register_space;
2105  unsigned int descriptor_table_offset;
2106 };
2107 
2109 {
2110  unsigned int descriptor_range_count;
2111  const struct vkd3d_shader_descriptor_range1 *descriptor_ranges;
2112 };
2113 
2115 {
2116  unsigned int shader_register;
2117  unsigned int register_space;
2118  enum vkd3d_shader_root_descriptor_flags flags;
2119 };
2120 
2122 {
2123  enum vkd3d_shader_root_parameter_type parameter_type;
2124  union
2125  {
2126  struct vkd3d_shader_root_descriptor_table1 descriptor_table;
2127  struct vkd3d_shader_root_constants constants;
2128  struct vkd3d_shader_root_descriptor1 descriptor;
2129  } u;
2130  enum vkd3d_shader_visibility shader_visibility;
2131 };
2132 
2134 {
2135  unsigned int parameter_count;
2136  const struct vkd3d_shader_root_parameter1 *parameters;
2137  unsigned int static_sampler_count;
2138  const struct vkd3d_shader_static_sampler_desc *static_samplers;
2139  enum vkd3d_shader_root_signature_flags flags;
2140 };
2141 
2142 enum vkd3d_shader_root_signature_version
2143 {
2144  VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2145  VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
2146 
2147  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_VERSION),
2148 };
2149 
2151 {
2152  enum vkd3d_shader_root_signature_version version;
2153  union
2154  {
2155  struct vkd3d_shader_root_signature_desc v_1_0;
2156  struct vkd3d_shader_root_signature_desc1 v_1_1;
2157  } u;
2158 };
2159 
2165 {
2191 
2192  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_TYPE),
2193 };
2194 
2200 {
2226 
2227  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_DATA_TYPE),
2228 };
2229 
2235 {
2250 
2251  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_INFO_FLAG),
2252 };
2253 
2259 {
2266  unsigned int register_space;
2268  unsigned int register_index;
2277  unsigned int flags;
2282  unsigned int count;
2283 };
2284 
2319 {
2325  const void *next;
2326 
2330  unsigned int descriptor_count;
2331 };
2332 
2340 {
2341  unsigned int resource_space;
2342  unsigned int resource_index;
2343  unsigned int sampler_space;
2344  unsigned int sampler_index;
2345 };
2346 
2368 {
2372  const void *next;
2373 
2378 };
2379 
2388 {
2392  const void *next;
2393 
2395  enum vkd3d_shader_tessellator_output_primitive output_primitive;
2397  enum vkd3d_shader_tessellator_partitioning partitioning;
2398 };
2399 
2408 {
2412  const void *next;
2413 
2415  unsigned int x, y, z;
2416 };
2417 
2433 {
2437  const void *next;
2438 
2451 
2471 };
2472 
2478 {
2501 
2502  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPONENT_TYPE),
2503 };
2504 
2507 {
2530  VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE = 0x0b,
2531  VKD3D_SHADER_SV_TESS_FACTOR_QUADINT = 0x0c,
2532  VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE = 0x0d,
2533  VKD3D_SHADER_SV_TESS_FACTOR_TRIINT = 0x0e,
2534  VKD3D_SHADER_SV_TESS_FACTOR_LINEDET = 0x0f,
2535  VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN = 0x10,
2554 
2555  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SYSVAL_SEMANTIC),
2556 };
2557 
2563 {
2564  VKD3D_SHADER_MINIMUM_PRECISION_NONE = 0,
2573 
2574  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_MINIMUM_PRECISION),
2575 };
2576 
2581 {
2583  const char *semantic_name;
2585  unsigned int semantic_index;
2590  unsigned int stream_index;
2599  unsigned int register_index;
2601  unsigned int mask;
2608  unsigned int used_mask;
2611 };
2612 
2621 {
2625  unsigned int element_count;
2626 };
2627 
2630 {
2631  VKD3D_SHADER_SWIZZLE_X = 0x0,
2632  VKD3D_SHADER_SWIZZLE_Y = 0x1,
2633  VKD3D_SHADER_SWIZZLE_Z = 0x2,
2634  VKD3D_SHADER_SWIZZLE_W = 0x3,
2635 
2636  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SWIZZLE_COMPONENT),
2637 };
2638 
2645 {
2647  uint32_t tag;
2649  struct vkd3d_shader_code data;
2650 };
2651 
2658 {
2663  uint32_t tag;
2665  uint32_t checksum[4];
2670  unsigned int version;
2672  size_t size;
2677 };
2678 
2683 #define VKD3D_SHADER_SWIZZLE_MASK (0xffu)
2685 #define VKD3D_SHADER_SWIZZLE_SHIFT(idx) (8u * (idx))
2686 
2696 #define VKD3D_SHADER_SWIZZLE(x, y, z, w) \
2697  (VKD3D_SHADER_SWIZZLE_ ## x << VKD3D_SHADER_SWIZZLE_SHIFT(0) \
2698  | VKD3D_SHADER_SWIZZLE_ ## y << VKD3D_SHADER_SWIZZLE_SHIFT(1) \
2699  | VKD3D_SHADER_SWIZZLE_ ## z << VKD3D_SHADER_SWIZZLE_SHIFT(2) \
2700  | VKD3D_SHADER_SWIZZLE_ ## w << VKD3D_SHADER_SWIZZLE_SHIFT(3))
2701 
2703 #define VKD3D_SHADER_NO_SWIZZLE VKD3D_SHADER_SWIZZLE(X, Y, Z, W)
2704 
2709 {
2714 }
2715 
2758 {
2762  const void *next;
2763 
2766 
2769 
2772 };
2773 
2781 {
2790  unsigned int input_register_index;
2792  unsigned int input_mask;
2793 };
2794 
2820 {
2824  const void *next;
2825 
2839  unsigned int varying_count;
2840 };
2841 
2868 {
2872  const void *next;
2873 
2877  unsigned int parameter_count;
2878 };
2879 
2880 #ifdef LIBVKD3D_SHADER_SOURCE
2881 # define VKD3D_SHADER_API VKD3D_EXPORT
2882 #else
2883 # define VKD3D_SHADER_API VKD3D_IMPORT
2884 #endif
2885 
2886 #ifndef VKD3D_SHADER_NO_PROTOTYPES
2887 
2899 VKD3D_SHADER_API const char *vkd3d_shader_get_version(unsigned int *major, unsigned int *minor);
2915 VKD3D_SHADER_API const enum vkd3d_shader_source_type *vkd3d_shader_get_supported_source_types(unsigned int *count);
2931  enum vkd3d_shader_source_type source_type, unsigned int *count);
2932 
3007 VKD3D_SHADER_API int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
3008  struct vkd3d_shader_code *out, char **messages);
3016 VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages);
3026 VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
3027 
3063 VKD3D_SHADER_API int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
3064  struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
3075 VKD3D_SHADER_API void vkd3d_shader_free_root_signature(
3076  struct vkd3d_shader_versioned_root_signature_desc *root_signature);
3077 
3107  const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
3108  struct vkd3d_shader_code *dxbc, char **messages);
3130  enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
3131 
3202 VKD3D_SHADER_API int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char **messages);
3213  struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
3214 
3254 VKD3D_SHADER_API int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
3255  struct vkd3d_shader_signature *signature, char **messages);
3276  const struct vkd3d_shader_signature *signature, const char *semantic_name,
3277  unsigned int semantic_index, unsigned int stream_index);
3287 VKD3D_SHADER_API void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature);
3288 
3289 /* 1.3 */
3290 
3324 VKD3D_SHADER_API int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info,
3325  struct vkd3d_shader_code *out, char **messages);
3326 
3337 VKD3D_SHADER_API void vkd3d_shader_set_log_callback(PFN_vkd3d_log callback);
3338 
3350 VKD3D_SHADER_API void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc);
3351 
3381 VKD3D_SHADER_API int vkd3d_shader_parse_dxbc(const struct vkd3d_shader_code *dxbc,
3382  uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages);
3383 
3414 VKD3D_SHADER_API int vkd3d_shader_serialize_dxbc(size_t section_count,
3415  const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages);
3416 
3429 
3455 VKD3D_SHADER_API void vkd3d_shader_build_varying_map(const struct vkd3d_shader_signature *output_signature,
3456  const struct vkd3d_shader_signature *input_signature,
3457  unsigned int *count, struct vkd3d_shader_varying_map *varyings);
3458 
3473 
3474 #endif /* VKD3D_SHADER_NO_PROTOTYPES */
3475 
3477 typedef const char *(*PFN_vkd3d_shader_get_version)(unsigned int *major, unsigned int *minor);
3479 typedef const enum vkd3d_shader_source_type *(*PFN_vkd3d_shader_get_supported_source_types)(unsigned int *count);
3481 typedef const enum vkd3d_shader_target_type *(*PFN_vkd3d_shader_get_supported_target_types)(
3482  enum vkd3d_shader_source_type source_type, unsigned int *count);
3483 
3485 typedef int (*PFN_vkd3d_shader_compile)(const struct vkd3d_shader_compile_info *compile_info,
3486  struct vkd3d_shader_code *out, char **messages);
3488 typedef void (*PFN_vkd3d_shader_free_messages)(char *messages);
3491 
3494  struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
3497 
3500  const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
3501  struct vkd3d_shader_code *dxbc, char **messages);
3502 
3505  enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
3506 
3508 typedef int (*PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages);
3511  struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
3512 
3515  struct vkd3d_shader_signature *signature, char **messages);
3517 typedef struct vkd3d_shader_signature_element * (*PFN_vkd3d_shader_find_signature_element)(
3518  const struct vkd3d_shader_signature *signature, const char *semantic_name,
3519  unsigned int semantic_index, unsigned int stream_index);
3522 
3524 typedef void (*PFN_vkd3d_shader_preprocess)(struct vkd3d_shader_compile_info *compile_info,
3525  struct vkd3d_shader_code *out, char **messages);
3526 
3528 typedef void (*PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback);
3529 
3533 typedef int (*PFN_vkd3d_shader_parse_dxbc)(const struct vkd3d_shader_code *dxbc,
3534  uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages);
3537  const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages);
3538 
3540 typedef void (*PFN_vkd3d_shader_build_varying_map)(const struct vkd3d_shader_signature *output_signature,
3541  const struct vkd3d_shader_signature *input_signature,
3542  unsigned int *count, struct vkd3d_shader_varying_map *varyings);
3545 
3549 
3550 #ifdef __cplusplus
3551 }
3552 #endif /* __cplusplus */
3553 
3554 #endif /* __VKD3D_SHADER_H */
A generic structure containing a GPU shader, in text or byte-code format.
Definition: vkd3d_shader.h:429
const void * code
Pointer to the code.
Definition: vkd3d_shader.h:444
size_t size
Size of code, in bytes.
Definition: vkd3d_shader.h:446
This structure describes a single resource-sampler pair.
Definition: vkd3d_shader.h:2340
Describes the mapping of a Direct3D resource-sampler pair to a combined sampler (i....
Definition: vkd3d_shader.h:1300
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:1321
unsigned int resource_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:1307
unsigned int sampler_index
Register index of the Direct3D sampler.
Definition: vkd3d_shader.h:1314
unsigned int sampler_space
Register space of the Direct3D sampler.
Definition: vkd3d_shader.h:1312
unsigned int resource_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:1305
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:1318
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:1316
A chained structure containing compilation parameters.
Definition: vkd3d_shader.h:1628
const struct vkd3d_shader_compile_option * options
Pointer to an array of compilation options.
Definition: vkd3d_shader.h:1656
struct vkd3d_shader_code source
Input source code or byte code.
Definition: vkd3d_shader.h:1639
enum vkd3d_shader_log_level log_level
Minimum severity of messages returned from the shader function.
Definition: vkd3d_shader.h:1661
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO.
Definition: vkd3d_shader.h:1630
const char * source_name
Name of the initial source file, which may be used in error messages or debug information.
Definition: vkd3d_shader.h:1666
unsigned int option_count
Size, in elements, of options.
Definition: vkd3d_shader.h:1658
enum vkd3d_shader_source_type source_type
Format of the input code passed in source.
Definition: vkd3d_shader.h:1642
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1636
enum vkd3d_shader_target_type target_type
Desired output format.
Definition: vkd3d_shader.h:1644
Various settings which may affect shader compilation or scanning, passed as part of struct vkd3d_shad...
Definition: vkd3d_shader.h:395
unsigned int value
A value associated with the option.
Definition: vkd3d_shader.h:402
enum vkd3d_shader_compile_option_name name
Name of the option.
Definition: vkd3d_shader.h:397
A chained structure containing legacy Direct3D bytecode compilation parameters.
Definition: vkd3d_shader.h:2433
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_D3DBC_SOURCE_INFO.
Definition: vkd3d_shader.h:2435
uint32_t shadow_samplers
A mask indicating which samplers should be shadow (i.e.
Definition: vkd3d_shader.h:2470
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2437
enum vkd3d_shader_resource_type texture_dimensions[6]
The dimension of each texture bound to the shader.
Definition: vkd3d_shader.h:2450
A common structure describing the bind point of a descriptor or descriptor array in the target enviro...
Definition: vkd3d_shader.h:481
unsigned int binding
The binding index of the descriptor.
Definition: vkd3d_shader.h:488
unsigned int count
The size of this descriptor array.
Definition: vkd3d_shader.h:494
unsigned int set
The set of the descriptor.
Definition: vkd3d_shader.h:486
Describes a single shader descriptor; returned as part of struct vkd3d_shader_scan_descriptor_info.
Definition: vkd3d_shader.h:2259
enum vkd3d_shader_resource_type resource_type
Resource type, if applicable, including its dimension.
Definition: vkd3d_shader.h:2270
unsigned int register_index
Register index of the descriptor.
Definition: vkd3d_shader.h:2268
enum vkd3d_shader_resource_data_type resource_data_type
Data type contained in the resource (for example, float or integer).
Definition: vkd3d_shader.h:2272
enum vkd3d_shader_descriptor_type type
Type of the descriptor (for example, SRV, CBV, UAV, or sampler).
Definition: vkd3d_shader.h:2261
unsigned int count
Size of this descriptor array, or 1 if a single descriptor.
Definition: vkd3d_shader.h:2282
unsigned int flags
Bitwise combination of zero or more members of vkd3d_shader_descriptor_info_flag.
Definition: vkd3d_shader.h:2277
unsigned int register_space
Register space of the resource, or 0 if the shader does not support multiple register spaces.
Definition: vkd3d_shader.h:2266
A chained structure containing descriptor offsets.
Definition: vkd3d_shader.h:1454
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1458
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:1517
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO.
Definition: vkd3d_shader.h:1456
unsigned int descriptor_table_offset
Byte offset within the push constants of an array of 32-bit descriptor array offsets.
Definition: vkd3d_shader.h:1465
unsigned int descriptor_table_count
Size, in elements, of the descriptor table push constant array.
Definition: vkd3d_shader.h:1467
const struct vkd3d_shader_descriptor_offset * binding_offsets
Pointer to an array of struct vkd3d_shader_descriptor_offset objects.
Definition: vkd3d_shader.h:1510
Definition: vkd3d_shader.h:1437
Definition: vkd3d_shader.h:2099
Definition: vkd3d_shader.h:2001
A description of a DXBC blob, as returned by vkd3d_shader_parse_dxbc().
Definition: vkd3d_shader.h:2658
size_t section_count
The number of sections contained in the DXBC.
Definition: vkd3d_shader.h:2674
struct vkd3d_shader_dxbc_section_desc * sections
Descriptions of the sections contained in the DXBC.
Definition: vkd3d_shader.h:2676
uint32_t tag
The DXBC tag.
Definition: vkd3d_shader.h:2663
size_t size
The total size of the DXBC blob.
Definition: vkd3d_shader.h:2672
uint32_t checksum[4]
A checksum of the DXBC contents.
Definition: vkd3d_shader.h:2665
unsigned int version
The DXBC version.
Definition: vkd3d_shader.h:2670
A description of a DXBC section.
Definition: vkd3d_shader.h:2645
uint32_t tag
The section tag.
Definition: vkd3d_shader.h:2647
struct vkd3d_shader_code data
The contents of the section.
Definition: vkd3d_shader.h:2649
A chained structure containing HLSL compilation parameters.
Definition: vkd3d_shader.h:1885
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO.
Definition: vkd3d_shader.h:1887
const char * profile
Pointer to a null-terminated string containing the target shader profile.
Definition: vkd3d_shader.h:1903
const char * entry_point
Optional pointer to a null-terminated string containing the shader entry point.
Definition: vkd3d_shader.h:1897
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1889
A chained structure describing the interface between a compiled shader and the target environment.
Definition: vkd3d_shader.h:1387
unsigned int combined_sampler_count
Size, in elements, of combined_samplers.
Definition: vkd3d_shader.h:1406
const struct vkd3d_shader_resource_binding * bindings
Pointer to an array of bindings for shader resource descriptors.
Definition: vkd3d_shader.h:1394
const struct vkd3d_shader_push_constant_buffer * push_constant_buffers
Pointer to an array of bindings for push constant buffers.
Definition: vkd3d_shader.h:1399
const struct vkd3d_shader_uav_counter_binding * uav_counters
Pointer to an array of bindings for UAV counters.
Definition: vkd3d_shader.h:1409
unsigned int binding_count
Size, in elements, of bindings.
Definition: vkd3d_shader.h:1396
unsigned int push_constant_buffer_count
Size, in elements, of push_constant_buffers.
Definition: vkd3d_shader.h:1401
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1391
const struct vkd3d_shader_combined_resource_sampler * combined_samplers
Pointer to an array of bindings for combined samplers.
Definition: vkd3d_shader.h:1404
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO.
Definition: vkd3d_shader.h:1389
unsigned int uav_counter_count
Size, in elements, of uav_counters.
Definition: vkd3d_shader.h:1411
A single preprocessor macro, passed as part of struct vkd3d_shader_preprocess_info.
Definition: vkd3d_shader.h:1752
const char * name
Pointer to a null-terminated string containing the name of a macro.
Definition: vkd3d_shader.h:1758
const char * value
Optional pointer to a null-terminated string containing the expansion of the macro.
Definition: vkd3d_shader.h:1764
An individual shader parameter.
Definition: vkd3d_shader.h:1196
enum vkd3d_shader_parameter_type type
How the parameter will be provided to the shader.
Definition: vkd3d_shader.h:1200
struct vkd3d_shader_parameter_immediate_constant1 immediate_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT.
Definition: vkd3d_shader.h:1212
struct vkd3d_shader_parameter_specialization_constant specialization_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT.
Definition: vkd3d_shader.h:1217
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:1205
struct vkd3d_shader_parameter_buffer buffer
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Definition: vkd3d_shader.h:1222
enum vkd3d_shader_parameter_name name
The builtin parameter to be mapped.
Definition: vkd3d_shader.h:1198
The linkage of a parameter specified through a uniform buffer, used in struct vkd3d_shader_parameter1...
Definition: vkd3d_shader.h:1142
uint32_t offset
The byte offset of the parameter within the buffer.
Definition: vkd3d_shader.h:1151
unsigned int set
The set of the uniform buffer descriptor.
Definition: vkd3d_shader.h:1147
unsigned int binding
The binding index of the uniform buffer descriptor.
Definition: vkd3d_shader.h:1149
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter1.
Definition: vkd3d_shader.h:1096
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:1115
uint32_t u32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition: vkd3d_shader.h:1103
float f32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition: vkd3d_shader.h:1108
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter.
Definition: vkd3d_shader.h:1071
float f32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition: vkd3d_shader.h:1085
uint32_t u32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition: vkd3d_shader.h:1078
Interface information regarding a builtin shader parameter.
Definition: vkd3d_shader.h:2868
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO.
Definition: vkd3d_shader.h:2870
unsigned int parameter_count
Size, in elements, of parameters.
Definition: vkd3d_shader.h:2877
const struct vkd3d_shader_parameter1 * parameters
Pointer to an array of dynamic parameters for this shader instance.
Definition: vkd3d_shader.h:2875
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2872
The linkage of a specialization constant parameter, used in struct vkd3d_shader_parameter and struct ...
Definition: vkd3d_shader.h:1126
uint32_t id
The ID of the specialization constant.
Definition: vkd3d_shader.h:1134
An individual shader parameter.
Definition: vkd3d_shader.h:1167
A chained structure containing preprocessing parameters.
Definition: vkd3d_shader.h:1825
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO.
Definition: vkd3d_shader.h:1827
const struct vkd3d_shader_macro * macros
Pointer to an array of predefined macros.
Definition: vkd3d_shader.h:1839
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:1870
unsigned int macro_count
Size, in elements, of macros.
Definition: vkd3d_shader.h:1841
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:1855
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:1865
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1829
Describes the mapping of a Direct3D constant buffer to a range of push constants in the target enviro...
Definition: vkd3d_shader.h:1353
unsigned int register_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:1360
unsigned int size
Size, in bytes, of the target push constants.
Definition: vkd3d_shader.h:1367
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:1358
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:1362
unsigned int offset
Offset, in bytes, of the target push constants.
Definition: vkd3d_shader.h:1365
Describes the mapping of a single resource or resource array to its binding point in the target envir...
Definition: vkd3d_shader.h:1265
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:1288
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:1272
enum vkd3d_shader_descriptor_type type
The type of this descriptor.
Definition: vkd3d_shader.h:1267
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:1285
unsigned int register_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:1281
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:1283
Definition: vkd3d_shader.h:2016
Definition: vkd3d_shader.h:2115
Definition: vkd3d_shader.h:2109
Definition: vkd3d_shader.h:2010
Definition: vkd3d_shader.h:2023
Definition: vkd3d_shader.h:2122
Definition: vkd3d_shader.h:2040
Definition: vkd3d_shader.h:2134
Definition: vkd3d_shader.h:2066
A chained structure describing the resource-sampler pairs used by a shader.
Definition: vkd3d_shader.h:2368
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_COMBINED_RESOURCE_SAMPLER_INFO.
Definition: vkd3d_shader.h:2370
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2372
unsigned int combined_sampler_count
The number of resource-sampler pairs in combined_samplers.
Definition: vkd3d_shader.h:2377
struct vkd3d_shader_combined_resource_sampler_info * combined_samplers
Pointer to an array of resource-sampler pairs.
Definition: vkd3d_shader.h:2375
A chained structure enumerating the descriptors declared by a shader.
Definition: vkd3d_shader.h:2319
enum vkd3d_shader_structure_type type
Input; must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO.
Definition: vkd3d_shader.h:2323
const void * next
Input; optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2325
unsigned int descriptor_count
Output; size, in elements, of descriptors.
Definition: vkd3d_shader.h:2330
struct vkd3d_shader_descriptor_info * descriptors
Output; returns a pointer to an array of descriptors.
Definition: vkd3d_shader.h:2328
A chained structure describing the tessellation information in a hull shader.
Definition: vkd3d_shader.h:2388
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2392
enum vkd3d_shader_tessellator_output_primitive output_primitive
The tessellation output primitive.
Definition: vkd3d_shader.h:2395
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_HULL_SHADER_TESSELLATION_INFO.
Definition: vkd3d_shader.h:2390
enum vkd3d_shader_tessellator_partitioning partitioning
The tessellation partitioning mode.
Definition: vkd3d_shader.h:2397
A chained structure containing descriptions of shader inputs and outputs.
Definition: vkd3d_shader.h:2758
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2762
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO.
Definition: vkd3d_shader.h:2760
struct vkd3d_shader_signature patch_constant
The shader patch constant varyings.
Definition: vkd3d_shader.h:2771
struct vkd3d_shader_signature output
The shader output varyings.
Definition: vkd3d_shader.h:2768
struct vkd3d_shader_signature input
The shader input varyings.
Definition: vkd3d_shader.h:2765
A chained structure describing the thread group size in a compute shader.
Definition: vkd3d_shader.h:2408
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_THREAD_GROUP_SIZE_INFO.
Definition: vkd3d_shader.h:2410
unsigned int x
The thread group size in the x/y/z direction.
Definition: vkd3d_shader.h:2415
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2412
A single shader varying, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:2581
unsigned int semantic_index
Semantic index, or 0 if the semantic is not indexed.
Definition: vkd3d_shader.h:2585
enum vkd3d_shader_sysval_semantic sysval_semantic
System value semantic.
Definition: vkd3d_shader.h:2595
unsigned int stream_index
Stream index of a geometry shader output semantic.
Definition: vkd3d_shader.h:2590
unsigned int used_mask
Subset of mask which the shader reads from or writes to.
Definition: vkd3d_shader.h:2608
enum vkd3d_shader_component_type component_type
Data type.
Definition: vkd3d_shader.h:2597
enum vkd3d_shader_minimum_precision min_precision
Minimum interpolation precision.
Definition: vkd3d_shader.h:2610
unsigned int register_index
Register index.
Definition: vkd3d_shader.h:2599
unsigned int mask
Mask of the register components allocated to this varying.
Definition: vkd3d_shader.h:2601
const char * semantic_name
Semantic name.
Definition: vkd3d_shader.h:2583
Description of a shader input or output signature.
Definition: vkd3d_shader.h:2621
struct vkd3d_shader_signature_element * elements
Pointer to an array of varyings.
Definition: vkd3d_shader.h:2623
unsigned int element_count
Size, in elements, of elements.
Definition: vkd3d_shader.h:2625
Definition: vkd3d_shader.h:1739
Definition: vkd3d_shader.h:1698
Definition: vkd3d_shader.h:1984
Definition: vkd3d_shader.h:1415
Definition: vkd3d_shader.h:1426
Describes the mapping of a single Direct3D UAV counter.
Definition: vkd3d_shader.h:1330
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the UAV counter is visible.
Definition: vkd3d_shader.h:1339
unsigned int register_space
Register space of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:1335
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:1342
unsigned int register_index
Register index of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:1337
A chained structure which describes how output varyings in this shader stage should be mapped to inpu...
Definition: vkd3d_shader.h:2820
unsigned int varying_count
The number of registers provided in varying_map.
Definition: vkd3d_shader.h:2839
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO.
Definition: vkd3d_shader.h:2822
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2824
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:2837
Describes the mapping of a output varying register in a shader stage, to an input varying register in...
Definition: vkd3d_shader.h:2781
unsigned int input_register_index
The register index of the input varying to map this register to.
Definition: vkd3d_shader.h:2790
unsigned int input_mask
The mask consumed by the destination register.
Definition: vkd3d_shader.h:2792
unsigned int output_signature_index
The signature index (in the output signature) of the output varying.
Definition: vkd3d_shader.h:2788
Definition: vkd3d_shader.h:2151
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_d3dbc_constant_register
Symbolic register indices for mapping uniform constant register sets in legacy Direct3D bytecode to c...
Definition: vkd3d_shader.h:1238
@ VKD3D_SHADER_D3DBC_BOOL_CONSTANT_REGISTER
The boolean constant register set, b# in Direct3D assembly.
Definition: vkd3d_shader.h:1244
@ VKD3D_SHADER_D3DBC_FLOAT_CONSTANT_REGISTER
The float constant register set, c# in Direct3D assembly.
Definition: vkd3d_shader.h:1240
@ VKD3D_SHADER_D3DBC_INT_CONSTANT_REGISTER
The integer constant register set, i# in Direct3D assembly.
Definition: vkd3d_shader.h:1242
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_compile_option_name
Definition: vkd3d_shader.h:289
@ 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:376
@ VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV
value is a member of enum vkd3d_shader_compile_option_typed_uav.
Definition: vkd3d_shader.h:305
@ VKD3D_SHADER_COMPILE_OPTION_BACKWARD_COMPATIBILITY
This option is used to enable various backward compatibility features.
Definition: vkd3d_shader.h:334
@ VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER
This option specifies default matrix packing order for HLSL sources.
Definition: vkd3d_shader.h:326
@ 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:365
@ VKD3D_SHADER_COMPILE_OPTION_API_VERSION
value is a member of enum vkd3d_shader_api_version.
Definition: vkd3d_shader.h:303
@ 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:317
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV
value is a member of enum vkd3d_shader_compile_option_buffer_uav.
Definition: vkd3d_shader.h:299
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN
This option specifies the origin of fragment coordinates for SPIR-V targets.
Definition: vkd3d_shader.h:344
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE
This option specifies the shader features available in the target environment.
Definition: vkd3d_shader.h:354
@ VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG
If value is nonzero, do not include debug information in the compiled shader.
Definition: vkd3d_shader.h:297
@ 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:384
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING
value is a member of enum vkd3d_shader_compile_option_formatting_flags.
Definition: vkd3d_shader.h:301
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:2706
vkd3d_shader_compile_option_formatting_flags
Definition: vkd3d_shader.h:173
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES
Emit the signatures when disassembling a shader.
Definition: vkd3d_shader.h:185
void(* PFN_vkd3d_shader_free_dxbc)(struct vkd3d_shader_dxbc_desc *dxbc)
Type of vkd3d_shader_free_dxbc().
Definition: vkd3d_shader.h:3531
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:3504
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:3540
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:2200
@ VKD3D_SHADER_RESOURCE_DATA_NONE
The descriptor has no relevant data type.
Definition: vkd3d_shader.h:2205
@ VKD3D_SHADER_RESOURCE_DATA_DOUBLE
IEEE double-precision floating-point.
Definition: vkd3d_shader.h:2219
@ VKD3D_SHADER_RESOURCE_DATA_MIXED
Undefined/type-less.
Definition: vkd3d_shader.h:2217
@ VKD3D_SHADER_RESOURCE_DATA_SNORM
Signed normalized integer.
Definition: vkd3d_shader.h:2209
@ VKD3D_SHADER_RESOURCE_DATA_CONTINUED
Continuation of the previous component.
Definition: vkd3d_shader.h:2225
@ VKD3D_SHADER_RESOURCE_DATA_UINT
Unsigned integer.
Definition: vkd3d_shader.h:2213
@ VKD3D_SHADER_RESOURCE_DATA_FLOAT
IEEE single-precision floating-point.
Definition: vkd3d_shader.h:2215
@ VKD3D_SHADER_RESOURCE_DATA_UNORM
Unsigned normalized integer.
Definition: vkd3d_shader.h:2207
@ VKD3D_SHADER_RESOURCE_DATA_INT
Signed integer.
Definition: vkd3d_shader.h:2211
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:617
@ VKD3D_SHADER_PARAMETER_TYPE_BUFFER
The parameter value is provided to the shader as part of a uniform buffer.
Definition: vkd3d_shader.h:632
@ VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT
The parameter value is provided to the shader via specialization constants.
Definition: vkd3d_shader.h:625
@ VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT
The parameter value is embedded directly in the shader.
Definition: vkd3d_shader.h:620
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:1795
vkd3d_shader_compile_option_fragment_coordinate_origin
Determines the origin of fragment coordinates.
Definition: vkd3d_shader.h:235
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_LOWER_LEFT
Fragment coordinates originate from the lower-left.
Definition: vkd3d_shader.h:241
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_UPPER_LEFT
Fragment coordinates originate from the upper-left.
Definition: vkd3d_shader.h:238
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:584
@ VKD3D_SHADER_FOG_SOURCE_FOG
The source shader is not modified.
Definition: vkd3d_shader.h:589
@ VKD3D_SHADER_FOG_SOURCE_FOG_OR_SPECULAR_W
If the source shader has a fog varying, it is not modified.
Definition: vkd3d_shader.h:597
@ VKD3D_SHADER_FOG_SOURCE_W
The fog source is the W component of the position output by the vertex shader.
Definition: vkd3d_shader.h:607
@ VKD3D_SHADER_FOG_SOURCE_Z
The fog source is the Z component of the position output by the vertex shader.
Definition: vkd3d_shader.h:602
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:642
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32_VEC4
The parameter is provided as a 4-dimensional vector of 32-bit floats.
Definition: vkd3d_shader.h:654
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32
The parameter is provided as a 32-bit unsigned integer.
Definition: vkd3d_shader.h:645
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32
The parameter is provided as a 32-bit float.
Definition: vkd3d_shader.h:647
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:3536
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:1811
vkd3d_shader_descriptor_info_flag
Additional flags describing a shader descriptor, returned as part of struct vkd3d_shader_descriptor_i...
Definition: vkd3d_shader.h:2235
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER
The descriptor is a raw (byte-addressed) buffer.
Definition: vkd3d_shader.h:2249
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ
The descriptor is a UAV resource, which is read from by the shader.
Definition: vkd3d_shader.h:2242
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_ATOMICS
The descriptor is a UAV resource, on which the shader performs atomic ops.
Definition: vkd3d_shader.h:2247
@ 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:2240
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE
The descriptor is a comparison sampler.
Definition: vkd3d_shader.h:2244
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:201
@ VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_MAP_SEMANTIC_NAMES
Causes compiler to convert SM1-3 semantics to corresponding System Value semantics,...
Definition: vkd3d_shader.h:213
@ VKD3D_SHADER_COMPILE_OPTION_DOUBLE_AS_FLOAT_ALIAS
Causes 'double' to behave as an alias for 'float'.
Definition: vkd3d_shader.h:224
void(* PFN_vkd3d_shader_free_shader_signature)(struct vkd3d_shader_signature *signature)
Type of vkd3d_shader_free_shader_signature().
Definition: vkd3d_shader.h:3521
int(* PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages)
Type of vkd3d_shader_scan().
Definition: vkd3d_shader.h:3508
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:3496
vkd3d_shader_sysval_semantic
System value semantic, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:2507
@ VKD3D_SHADER_SV_VERTEX_ID
Vertex ID; SV_VertexID in Direct3D.
Definition: vkd3d_shader.h:2521
@ VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX
Render target layer; SV_RenderTargetArrayIndex in Direct3D.
Definition: vkd3d_shader.h:2517
@ 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:2551
@ VKD3D_SHADER_SV_PRIMITIVE_ID
Primitive ID; SV_PrimitiveID in Direct3D.
Definition: vkd3d_shader.h:2523
@ VKD3D_SHADER_SV_COVERAGE
Sample mask; SV_Coverage in Direct3D.
Definition: vkd3d_shader.h:2541
@ VKD3D_SHADER_SV_CULL_DISTANCE
Cull distance; SV_CullDistance in Direct3D.
Definition: vkd3d_shader.h:2515
@ VKD3D_SHADER_SV_DEPTH
Depth; SV_Depth in Direct3D.
Definition: vkd3d_shader.h:2539
@ VKD3D_SHADER_SV_TARGET
Render target; SV_Target in Direct3D.
Definition: vkd3d_shader.h:2537
@ VKD3D_SHADER_SV_NONE
No system value.
Definition: vkd3d_shader.h:2509
@ VKD3D_SHADER_SV_IS_FRONT_FACE
Whether the triangle is front-facing; SV_IsFrontFace in Direct3D.
Definition: vkd3d_shader.h:2527
@ VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX
Viewport index; SV_ViewportArrayIndex in Direct3D.
Definition: vkd3d_shader.h:2519
@ 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:2546
@ VKD3D_SHADER_SV_INSTANCE_ID
Instance ID; SV_InstanceID in Direct3D.
Definition: vkd3d_shader.h:2525
@ VKD3D_SHADER_SV_CLIP_DISTANCE
Clip distance; SV_ClipDistance in Direct3D.
Definition: vkd3d_shader.h:2513
@ VKD3D_SHADER_SV_SAMPLE_INDEX
Sample index; SV_SampleIndex in Direct3D.
Definition: vkd3d_shader.h:2529
@ VKD3D_SHADER_SV_STENCIL_REF
Stencil reference; SV_StencilRef in Direct3D.
Definition: vkd3d_shader.h:2553
@ VKD3D_SHADER_SV_POSITION
Vertex position; SV_Position in Direct3D.
Definition: vkd3d_shader.h:2511
vkd3d_shader_source_type
The format of a shader to be compiled or scanned.
Definition: vkd3d_shader.h:1522
@ VKD3D_SHADER_SOURCE_DXBC_DXIL
A 'DirectX Intermediate Language' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1544
@ VKD3D_SHADER_SOURCE_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:1539
@ VKD3D_SHADER_SOURCE_HLSL
High-Level Shader Language source code.
Definition: vkd3d_shader.h:1534
@ VKD3D_SHADER_SOURCE_FX
Binary format used by Direct3D 9/10.x/11 effects.
Definition: vkd3d_shader.h:1549
@ VKD3D_SHADER_SOURCE_TX
A D3DX texture shader.
Definition: vkd3d_shader.h:1554
@ VKD3D_SHADER_SOURCE_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1532
@ VKD3D_SHADER_SOURCE_NONE
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:1527
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:280
@ VKD3D_SHADER_PARSE_DXBC_IGNORE_CHECKSUM
Ignore the checksum and continue parsing even if it is incorrect.
Definition: vkd3d_shader.h:283
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:1609
@ VKD3D_SHADER_LOG_NONE
No messages will be returned.
Definition: vkd3d_shader.h:1611
@ VKD3D_SHADER_LOG_ERROR
Only fatal errors which prevent successful compilation will be returned.
Definition: vkd3d_shader.h:1613
@ VKD3D_SHADER_LOG_WARNING
Non-fatal warnings and fatal errors will be returned.
Definition: vkd3d_shader.h:1615
@ VKD3D_SHADER_LOG_INFO
All messages, including general informational messages, will be returned.
Definition: vkd3d_shader.h:1619
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:522
@ VKD3D_SHADER_FOG_FRAGMENT_EXP2
The fog interpolation factor is 2^-((k * c)²).
Definition: vkd3d_shader.h:554
@ VKD3D_SHADER_FOG_FRAGMENT_NONE
No fog interpolation is applied; the output colour is passed through unmodified.
Definition: vkd3d_shader.h:528
@ VKD3D_SHADER_FOG_FRAGMENT_EXP
The fog interpolation factor is 2^-(k * c).
Definition: vkd3d_shader.h:541
@ VKD3D_SHADER_FOG_FRAGMENT_LINEAR
The fog interpolation factor is (E - c) * k.
Definition: vkd3d_shader.h:568
vkd3d_shader_structure_type
The type of a chained structure.
Definition: vkd3d_shader.h:71
@ VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO
The structure is a vkd3d_shader_transform_feedback_info structure.
Definition: vkd3d_shader.h:83
@ 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:114
@ VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO
The structure is a vkd3d_shader_compile_info structure.
Definition: vkd3d_shader.h:73
@ VKD3D_SHADER_STRUCTURE_TYPE_D3DBC_SOURCE_INFO
The structure is a vkd3d_shader_d3dbc_source_info structure.
Definition: vkd3d_shader.h:134
@ VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO
The structure is a vkd3d_shader_parameter_info structure.
Definition: vkd3d_shader.h:119
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO
The structure is a vkd3d_shader_scan_descriptor_info structure.
Definition: vkd3d_shader.h:77
@ 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:79
@ VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO
The structure is a vkd3d_shader_descriptor_offset_info structure.
Definition: vkd3d_shader.h:99
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO
The structure is a vkd3d_shader_scan_signature_info structure.
Definition: vkd3d_shader.h:104
@ 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:129
@ VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO
The structure is a vkd3d_shader_preprocess_info structure.
Definition: vkd3d_shader.h:94
@ VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO
The structure is a vkd3d_shader_interface_info structure.
Definition: vkd3d_shader.h:75
@ 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:124
@ VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO
The structure is a vkd3d_shader_varying_map_info structure.
Definition: vkd3d_shader.h:109
@ VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO
The structure is a vkd3d_shader_spirv_target_info structure.
Definition: vkd3d_shader.h:81
@ VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO
The structure is a vkd3d_shader_hlsl_source_info structure.
Definition: vkd3d_shader.h:89
vkd3d_shader_visibility
Describes which shader stages a resource is visible to.
Definition: vkd3d_shader.h:407
@ VKD3D_SHADER_VISIBILITY_DOMAIN
The resource is visible only to the domain shader.
Definition: vkd3d_shader.h:415
@ VKD3D_SHADER_VISIBILITY_COMPUTE
The resource is visible only to the compute shader.
Definition: vkd3d_shader.h:422
@ VKD3D_SHADER_VISIBILITY_PIXEL
The resource is visible only to the pixel shader.
Definition: vkd3d_shader.h:419
@ VKD3D_SHADER_VISIBILITY_ALL
The resource is visible to all shader stages.
Definition: vkd3d_shader.h:409
@ VKD3D_SHADER_VISIBILITY_GEOMETRY
The resource is visible only to the geometry shader.
Definition: vkd3d_shader.h:417
@ VKD3D_SHADER_VISIBILITY_VERTEX
The resource is visible only to the vertex shader.
Definition: vkd3d_shader.h:411
@ VKD3D_SHADER_VISIBILITY_HULL
The resource is visible only to the hull shader.
Definition: vkd3d_shader.h:413
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:1681
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_FRAGMENT_SHADER_INTERLOCK
Definition: vkd3d_shader.h:1691
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_STENCIL_EXPORT
Definition: vkd3d_shader.h:1687
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER
Definition: vkd3d_shader.h:1689
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_DESCRIPTOR_INDEXING
Definition: vkd3d_shader.h:1685
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:2478
@ VKD3D_SHADER_COMPONENT_INT
32-bit signed integer.
Definition: vkd3d_shader.h:2484
@ VKD3D_SHADER_COMPONENT_UINT
32-bit unsigned integer.
Definition: vkd3d_shader.h:2482
@ VKD3D_SHADER_COMPONENT_FLOAT16
16-bit IEEE floating-point.
Definition: vkd3d_shader.h:2496
@ VKD3D_SHADER_COMPONENT_UINT16
16-bit unsigned integer.
Definition: vkd3d_shader.h:2498
@ VKD3D_SHADER_COMPONENT_INT16
16-bit signed integer.
Definition: vkd3d_shader.h:2500
@ VKD3D_SHADER_COMPONENT_DOUBLE
64-bit IEEE floating-point.
Definition: vkd3d_shader.h:2490
@ VKD3D_SHADER_COMPONENT_UINT64
64-bit unsigned integer.
Definition: vkd3d_shader.h:2492
@ VKD3D_SHADER_COMPONENT_FLOAT
32-bit IEEE floating-point.
Definition: vkd3d_shader.h:2486
@ VKD3D_SHADER_COMPONENT_VOID
The varying has no type.
Definition: vkd3d_shader.h:2480
@ VKD3D_SHADER_COMPONENT_INT64
64-bit signed integer.
Definition: vkd3d_shader.h:2494
@ VKD3D_SHADER_COMPONENT_BOOL
Boolean.
Definition: vkd3d_shader.h:2488
vkd3d_shader_descriptor_type
The type of a shader resource descriptor.
Definition: vkd3d_shader.h:451
@ VKD3D_SHADER_DESCRIPTOR_TYPE_UAV
The descriptor is an unordered access view.
Definition: vkd3d_shader.h:461
@ VKD3D_SHADER_DESCRIPTOR_TYPE_CBV
The descriptor is a constant buffer view.
Definition: vkd3d_shader.h:466
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
The descriptor is a sampler.
Definition: vkd3d_shader.h:471
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
The descriptor is a shader resource view.
Definition: vkd3d_shader.h:456
#define VKD3D_SHADER_SWIZZLE_MASK
A mask selecting one component from a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:2683
vkd3d_shader_resource_type
The type of a shader resource, returned as part of struct vkd3d_shader_descriptor_info.
Definition: vkd3d_shader.h:2165
@ VKD3D_SHADER_RESOURCE_NONE
The type is invalid or not applicable for this descriptor.
Definition: vkd3d_shader.h:2170
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DARRAY
2-dimensional array texture.
Definition: vkd3d_shader.h:2186
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMS
Multisampled 2-dimensional texture.
Definition: vkd3d_shader.h:2178
@ VKD3D_SHADER_RESOURCE_TEXTURE_3D
3-dimensional texture.
Definition: vkd3d_shader.h:2180
@ VKD3D_SHADER_RESOURCE_TEXTURE_1DARRAY
1-dimensional array texture.
Definition: vkd3d_shader.h:2184
@ VKD3D_SHADER_RESOURCE_BUFFER
Dimensionless buffer.
Definition: vkd3d_shader.h:2172
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBE
Cubemap texture.
Definition: vkd3d_shader.h:2182
@ VKD3D_SHADER_RESOURCE_TEXTURE_1D
1-dimensional texture.
Definition: vkd3d_shader.h:2174
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
Cubemap array texture.
Definition: vkd3d_shader.h:2190
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
Multisampled 2-dimensional array texture.
Definition: vkd3d_shader.h:2188
@ VKD3D_SHADER_RESOURCE_TEXTURE_2D
2-dimensional texture.
Definition: vkd3d_shader.h:2176
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 const char * vkd3d_shader_get_version(unsigned int *major, unsigned int *minor)
Returns the current version of this library.
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:3493
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:3499
vkd3d_shader_compile_option_typed_uav
Determines how typed UAVs are declared.
Definition: vkd3d_shader.h:160
@ VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV_READ_FORMAT_UNKNOWN
Use Unknown format for UAVs which are read from.
Definition: vkd3d_shader.h:167
@ 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:162
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().
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:3533
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:2630
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:3485
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:3510
vkd3d_shader_descriptor_range_flags
Definition: vkd3d_shader.h:2086
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS
Definition: vkd3d_shader.h:2093
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:2685
void(* PFN_vkd3d_shader_free_messages)(char *messages)
Type of vkd3d_shader_free_messages().
Definition: vkd3d_shader.h:3488
vkd3d_shader_minimum_precision
Minimum interpolation precision of a shader varying, returned as part of struct vkd3d_shader_signatur...
Definition: vkd3d_shader.h:2563
@ VKD3D_SHADER_MINIMUM_PRECISION_UINT_16
16-bit unsigned integer.
Definition: vkd3d_shader.h:2572
@ VKD3D_SHADER_MINIMUM_PRECISION_FIXED_8_2
10-bit fixed point (2 integer and 8 fractional bits).
Definition: vkd3d_shader.h:2568
@ VKD3D_SHADER_MINIMUM_PRECISION_FLOAT_16
16-bit floating-point.
Definition: vkd3d_shader.h:2566
@ VKD3D_SHADER_MINIMUM_PRECISION_INT_16
16-bit signed integer.
Definition: vkd3d_shader.h:2570
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:3544
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:3514
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:3524
vkd3d_shader_target_type
The output format of a compiled shader.
Definition: vkd3d_shader.h:1561
@ VKD3D_SHADER_TARGET_SPIRV_BINARY
A SPIR-V shader in binary form.
Definition: vkd3d_shader.h:1571
@ VKD3D_SHADER_TARGET_D3D_ASM
Direct3D shader assembly.
Definition: vkd3d_shader.h:1576
@ VKD3D_SHADER_TARGET_NONE
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:1566
@ VKD3D_SHADER_TARGET_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1586
@ VKD3D_SHADER_TARGET_GLSL
An 'OpenGL Shading Language' shader.
Definition: vkd3d_shader.h:1590
@ VKD3D_SHADER_TARGET_MSL
A 'Metal Shading Language' shader.
Definition: vkd3d_shader.h:1599
@ VKD3D_SHADER_TARGET_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:1581
@ VKD3D_SHADER_TARGET_FX
Binary format used by Direct3D 9/10.x/11 effects profiles.
Definition: vkd3d_shader.h:1595
void(* PFN_vkd3d_shader_free_shader_code)(struct vkd3d_shader_code *code)
Type of vkd3d_shader_free_shader_code().
Definition: vkd3d_shader.h:3490
vkd3d_shader_compile_option_pack_matrix_order
Determines how matrices are stored.
Definition: vkd3d_shader.h:192
vkd3d_shader_spirv_environment
Definition: vkd3d_shader.h:1670
@ VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_1
Definition: vkd3d_shader.h:1675
vkd3d_shader_compile_option_feature_flags
Advertises feature availability.
Definition: vkd3d_shader.h:248
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_WAVE_OPS
The SPIR-V target environment supports wave operations.
Definition: vkd3d_shader.h:265
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64
The SPIR-V target environment supports 64-bit integer types.
Definition: vkd3d_shader.h:252
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64
The SPIR-V target environment supports 64-bit floating-point types.
Definition: vkd3d_shader.h:256
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY
The SPIR-V target environment supports zero-initializing workgroup memory.
Definition: vkd3d_shader.h:269
void(* PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback)
Type of vkd3d_shader_set_log_callback().
Definition: vkd3d_shader.h:3528
vkd3d_shader_parameter_name
Names a specific shader parameter, used in struct vkd3d_shader_parameter and struct vkd3d_shader_para...
Definition: vkd3d_shader.h:664
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SPRITE
Whether texture coordinate inputs should take their values from the point coordinate.
Definition: vkd3d_shader.h:874
@ VKD3D_SHADER_PARAMETER_NAME_FOG_SOURCE
Fog source.
Definition: vkd3d_shader.h:965
@ 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:678
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC
Alpha test comparison function.
Definition: vkd3d_shader.h:703
@ VKD3D_SHADER_PARAMETER_NAME_FOG_SCALE
Scale value for fog.
Definition: vkd3d_shader.h:941
@ VKD3D_SHADER_PARAMETER_NAME_BUMP_MATRIX_0
Bump-mapping matrix.
Definition: vkd3d_shader.h:989
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF
Alpha test reference value.
Definition: vkd3d_shader.h:713
@ VKD3D_SHADER_PARAMETER_NAME_FOG_END
End coordinate for linear fog.
Definition: vkd3d_shader.h:928
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MAX
Maximum point size.
Definition: vkd3d_shader.h:841
@ VKD3D_SHADER_PARAMETER_NAME_FOG_FRAGMENT_MODE
Fog mode used in fragment shaders.
Definition: vkd3d_shader.h:902
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MIN
Minimum point size.
Definition: vkd3d_shader.h:831
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE
Point size.
Definition: vkd3d_shader.h:808
@ VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_0
Clip plane values.
Definition: vkd3d_shader.h:782
@ VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION
Whether to use flat interpolation for fragment shader colour inputs.
Definition: vkd3d_shader.h:737
@ VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_MASK
A mask of enabled clip planes.
Definition: vkd3d_shader.h:765
@ VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_OFFSET_0
Bump-mapping luminance offset.
Definition: vkd3d_shader.h:1037
@ VKD3D_SHADER_PARAMETER_NAME_FOG_COLOUR
Fog colour.
Definition: vkd3d_shader.h:915
@ VKD3D_SHADER_PARAMETER_NAME_BUMP_LUMINANCE_SCALE_0
Bump-mapping luminance scale factor.
Definition: vkd3d_shader.h:1013
@ VKD3D_SHADER_PARAMETER_NAME_PROJECTED_TEXTURE_MASK
A mask of projected textures.
Definition: vkd3d_shader.h:1061
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:3547
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:146
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_TEXEL_BUFFER
Use buffer textures for buffer UAVs.
Definition: vkd3d_shader.h:148
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_BUFFER
Use storage buffers for buffer UAVs.
Definition: vkd3d_shader.h:150
This file contains definitions for basic types used by vkd3d libraries.