vkd3d  2.1
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  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 
73 {
86 
142 
143  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STRUCTURE_TYPE),
144 };
145 
153 {
158 
159  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV),
160 };
161 
167 {
175 
176  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV),
177 };
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 
208 {
255 
257 };
258 
265 {
272 
274 };
275 
278 {
300 
301  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLAGS),
302 };
303 
310 {
314 
315  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARSE_DXBC_FLAGS),
316 };
317 
319 {
436 
437  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_NAME),
438 };
439 
446 {
453  unsigned int value;
454 };
455 
458 {
471 
474 
475  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_VISIBILITY),
476 };
477 
480 {
495  const void *code;
497  size_t size;
498 };
499 
502 {
523 
524  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_TYPE),
525 };
526 
532 {
537  unsigned int set;
539  unsigned int binding;
545  unsigned int count;
546 };
547 
548 enum 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 
635 {
659 
660  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FOG_SOURCE),
661 };
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 
1177 {
1185  uint32_t id;
1186 };
1187 
1193 {
1198  unsigned int set;
1200  unsigned int binding;
1202  uint32_t offset;
1203 };
1204 
1218 {
1219  enum vkd3d_shader_parameter_name name;
1220  enum vkd3d_shader_parameter_type type;
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 
1247 {
1257  union
1258  {
1274  void *_pointer_pad;
1275  uint32_t _pad[4];
1276  } u;
1277 };
1278 
1289 {
1296 
1297  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_D3DBC_CONSTANT_REGISTER),
1298 };
1299 
1316 {
1323  unsigned int register_space;
1332  unsigned int register_index;
1336  unsigned int flags;
1337 
1340 };
1341 
1342 #define VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u
1343 
1351 {
1356  unsigned int resource_space;
1358  unsigned int resource_index;
1363  unsigned int sampler_space;
1365  unsigned int sampler_index;
1369  unsigned int flags;
1370 
1373 };
1374 
1381 {
1386  unsigned int register_space;
1388  unsigned int register_index;
1391 
1394  unsigned int offset;
1395 };
1396 
1404 {
1409  unsigned int register_space;
1411  unsigned int register_index;
1414 
1416  unsigned int offset;
1418  unsigned int size;
1419 };
1420 
1438 {
1442  const void *next;
1443 
1447  unsigned int binding_count;
1448 
1453 
1458 
1462  unsigned int uav_counter_count;
1463 };
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 {
1478  enum vkd3d_shader_structure_type type;
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 
1505 {
1509  const void *next;
1510 
1519 
1562 
1569 };
1570 
1573 {
1606 
1607  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SOURCE_TYPE),
1608 };
1609 
1612 {
1623  VKD3D_SHADER_TARGET_SPIRV_TEXT,
1651 
1652  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TARGET_TYPE),
1653 };
1654 
1660 {
1671 
1672  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_LOG_LEVEL),
1673 };
1674 
1679 {
1687  const void *next;
1688 
1691 
1696 
1709  unsigned int option_count;
1710 
1717  const char *source_name;
1718 };
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 
1732 {
1733  VKD3D_SHADER_SPIRV_EXTENSION_NONE,
1734  VKD3D_SHADER_SPIRV_EXTENSION_EXT_DEMOTE_TO_HELPER_INVOCATION,
1745 
1746  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_EXTENSION),
1747 };
1748 
1749 /* Extends vkd3d_shader_compile_info. */
1751 {
1752  enum vkd3d_shader_structure_type type;
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 
1770 enum 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 
1780 enum 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 {
1793  enum vkd3d_shader_structure_type type;
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 
1848 typedef int (*PFN_vkd3d_shader_open_include)(const char *filename, bool local,
1849  const char *parent_data, void *context, struct vkd3d_shader_code *out);
1864 typedef void (*PFN_vkd3d_shader_close_include)(const struct vkd3d_shader_code *code, void *context);
1865 
1878 {
1882  const void *next;
1883 
1894  unsigned int macro_count;
1895 
1924 };
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 */
1960 enum 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 
2002 enum 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 
2013 enum 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 
2027 enum 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 
2081 enum 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 
2104 enum 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 */
2128 enum 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 
2195 enum 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  {
2208  struct vkd3d_shader_root_signature_desc v_1_0;
2209  struct vkd3d_shader_root_signature_desc1 v_1_1;
2210  } u;
2211 };
2212 
2218 {
2244 
2245  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_TYPE),
2246 };
2247 
2253 {
2279 
2280  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_DATA_TYPE),
2281 };
2282 
2288 {
2303 
2304  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_INFO_FLAG),
2305 };
2306 
2312 {
2319  unsigned int register_space;
2321  unsigned int register_index;
2330  unsigned int flags;
2335  unsigned int count;
2336 };
2337 
2372 {
2378  const void *next;
2379 
2383  unsigned int descriptor_count;
2384 };
2385 
2393 {
2394  unsigned int resource_space;
2395  unsigned int resource_index;
2396  unsigned int sampler_space;
2397  unsigned int sampler_index;
2398 };
2399 
2421 {
2425  const void *next;
2426 
2431 };
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 
2477 {
2484 
2485  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DENORMAL_MODE),
2486 };
2487 
2497 {
2501  const void *next;
2502 
2509 };
2510 
2526 {
2530  const void *next;
2531 
2544 
2564 };
2565 
2571 {
2594 
2595  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPONENT_TYPE),
2596 };
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 
2674 {
2676  const char *semantic_name;
2678  unsigned int semantic_index;
2683  unsigned int stream_index;
2692  unsigned int register_index;
2694  unsigned int mask;
2701  unsigned int used_mask;
2704 };
2705 
2714 {
2718  unsigned int element_count;
2719 };
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 
2738 {
2740  uint32_t tag;
2743 };
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)
2777 
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 
2802 {
2807 }
2808 
2851 {
2855  const void *next;
2856 
2859 
2862 
2865 };
2866 
2874 {
2883  unsigned int input_register_index;
2885  unsigned int input_mask;
2886 };
2887 
2913 {
2917  const void *next;
2918 
2932  unsigned int varying_count;
2933 };
2934 
2961 {
2965  const void *next;
2966 
2970  unsigned int parameter_count;
2971 };
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 
2992 VKD3D_SHADER_API const char *vkd3d_shader_get_version(unsigned int *major, unsigned int *minor);
3008 VKD3D_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 
3101 VKD3D_SHADER_API int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
3102  struct vkd3d_shader_code *out, char **messages);
3110 VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages);
3120 VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
3121 
3157 VKD3D_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);
3169 VKD3D_SHADER_API void vkd3d_shader_free_root_signature(
3170  struct vkd3d_shader_versioned_root_signature_desc *root_signature);
3171 
3200 VKD3D_SHADER_API int vkd3d_shader_serialize_root_signature(
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 
3297 VKD3D_SHADER_API int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char **messages);
3307 VKD3D_SHADER_API void vkd3d_shader_free_scan_descriptor_info(
3308  struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
3309 
3349 VKD3D_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);
3382 VKD3D_SHADER_API void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature);
3383 
3384 /* 1.3 */
3385 
3419 VKD3D_SHADER_API int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info,
3420  struct vkd3d_shader_code *out, char **messages);
3421 
3432 VKD3D_SHADER_API void vkd3d_shader_set_log_callback(PFN_vkd3d_log callback);
3433 
3445 VKD3D_SHADER_API void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc);
3446 
3476 VKD3D_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 
3509 VKD3D_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 
3550 VKD3D_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 
3572 typedef const char *(*PFN_vkd3d_shader_get_version)(unsigned int *major, unsigned int *minor);
3574 typedef const enum vkd3d_shader_source_type *(*PFN_vkd3d_shader_get_supported_source_types)(unsigned int *count);
3576 typedef 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 
3580 typedef int (*PFN_vkd3d_shader_compile)(const struct vkd3d_shader_compile_info *compile_info,
3581  struct vkd3d_shader_code *out, char **messages);
3583 typedef 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 
3603 typedef 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);
3612 typedef 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 
3619 typedef void (*PFN_vkd3d_shader_preprocess)(struct vkd3d_shader_compile_info *compile_info,
3620  struct vkd3d_shader_code *out, char **messages);
3621 
3623 typedef void (*PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback);
3624 
3628 typedef 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 
3635 typedef 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 */
vkd3d_shader_visibility
Describes which shader stages a resource is visible to.
Definition: vkd3d_shader.h:457
The descriptor is a comparison sampler.
Definition: vkd3d_shader.h:2297
Definition: vkd3d_shader.h:2068
Describes the mapping of a single resource or resource array to its binding point in the target envir...
Definition: vkd3d_shader.h:1315
Definition: vkd3d_shader.h:2062
vkd3d_shader_descriptor_type
The type of a shader resource descriptor.
Definition: vkd3d_shader.h:501
const char * profile
Pointer to a null-terminated string containing the target shader profile.
Definition: vkd3d_shader.h:1956
The float constant register set, c# in Direct3D assembly.
Definition: vkd3d_shader.h:1291
enum vkd3d_shader_structure_type type
Input; must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO.
Definition: vkd3d_shader.h:2376
Causes all &#39;half&#39; globals to be handled as &#39;float&#39;.
Definition: vkd3d_shader.h:254
A chained structure containing compilation parameters.
Definition: vkd3d_shader.h:1678
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().
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2917
uint32_t tag
The section tag.
Definition: vkd3d_shader.h:2740
Cubemap array texture.
Definition: vkd3d_shader.h:2243
The descriptor is a raw (byte-addressed) buffer.
Definition: vkd3d_shader.h:2302
16-bit signed integer.
Definition: vkd3d_shader.h:2663
Cubemap texture.
Definition: vkd3d_shader.h:2235
unsigned int uav_counter_count
Size, in elements, of uav_counters.
Definition: vkd3d_shader.h:1462
1-dimensional texture.
Definition: vkd3d_shader.h:2227
const char * semantic_name
Semantic name.
Definition: vkd3d_shader.h:2676
Definition: vkd3d_shader.h:2167
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
Emit the signatures when disassembling a shader.
Definition: vkd3d_shader.h:192
The parameter is provided as a 32-bit float.
Definition: vkd3d_shader.h:698
Continuation of the previous component.
Definition: vkd3d_shader.h:2278
enum vkd3d_shader_target_type target_type
Desired output format.
Definition: vkd3d_shader.h:1695
Maximum point size.
Definition: vkd3d_shader.h:892
32-bit IEEE floating-point.
Definition: vkd3d_shader.h:2579
The resource is visible to all shader stages.
Definition: vkd3d_shader.h:460
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
Definition: vkd3d_shader.h:2053
The resource is visible only to the pixel shader.
Definition: vkd3d_shader.h:470
vkd3d_shader_parameter_name
Names a specific shader parameter, used in struct vkd3d_shader_parameter and struct vkd3d_shader_para...
Definition: vkd3d_shader.h:714
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.
Describes the mapping of a Direct3D constant buffer to a range of push constants in the target enviro...
Definition: vkd3d_shader.h:1403
The structure is a vkd3d_shader_compile_info structure.
Definition: vkd3d_shader.h:75
struct vkd3d_shader_dxbc_section_desc * sections
Descriptions of the sections contained in the DXBC.
Definition: vkd3d_shader.h:2769
const void * code
Pointer to the code.
Definition: vkd3d_shader.h:495
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
unsigned int binding_count
Size, in elements, of bindings.
Definition: vkd3d_shader.h:1447
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.
const struct vkd3d_shader_parameter1 * parameters
Pointer to an array of dynamic parameters for this shader instance.
Definition: vkd3d_shader.h:2968
Whether the triangle is front-facing; SV_IsFrontFace in Direct3D.
Definition: vkd3d_shader.h:2620
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2445
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
Clip plane values.
Definition: vkd3d_shader.h:833
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...
A chained structure describing the thread group size in a compute shader.
Definition: vkd3d_shader.h:2460
The structure is a vkd3d_shader_scan_denormal_mode_info structure.
Definition: vkd3d_shader.h:141
struct vkd3d_shader_code data
The contents of the section.
Definition: vkd3d_shader.h:2742
Binary format used by Direct3D 9/10.x/11 effects profiles.
Definition: vkd3d_shader.h:1646
3-dimensional texture.
Definition: vkd3d_shader.h:2233
unsigned int descriptor_table_count
Size, in elements, of the descriptor table push constant array.
Definition: vkd3d_shader.h:1518
Causes all uniform variables in global scope to be const.
Definition: vkd3d_shader.h:243
value is a member of enum vkd3d_shader_api_version.
Definition: vkd3d_shader.h:333
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 binding
The binding index of the uniform buffer descriptor.
Definition: vkd3d_shader.h:1200
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_component_type
Data type of a shader varying, returned as part of struct vkd3d_shader_signature_element.
Definition: vkd3d_shader.h:2570
unsigned int offset
Offset, in bytes, of the target push constants.
Definition: vkd3d_shader.h:1416
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:1393
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
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
The structure is a vkd3d_shader_descriptor_offset_info structure.
Definition: vkd3d_shader.h:101
A &#39;DirectX Intermediate Language&#39; shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1595
vkd3d_shader_parse_dxbc_flags
Flags for vkd3d_shader_parse_dxbc().
Definition: vkd3d_shader.h:309
Sample mask; SV_Coverage in Direct3D.
Definition: vkd3d_shader.h:2634
A chained structure containing legacy Direct3D bytecode compilation parameters.
Definition: vkd3d_shader.h:2525
Stencil reference; SV_StencilRef in Direct3D.
Definition: vkd3d_shader.h:2646
void(* PFN_vkd3d_shader_free_messages)(char *messages)
Type of vkd3d_shader_free_messages().
Definition: vkd3d_shader.h:3583
const struct vkd3d_shader_combined_resource_sampler * combined_samplers
Pointer to an array of bindings for combined samplers.
Definition: vkd3d_shader.h:1455
The structure is a vkd3d_shader_interface_info structure.
Definition: vkd3d_shader.h:77
unsigned int binding
The binding index of the descriptor.
Definition: vkd3d_shader.h:539
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
vkd3d_shader_fog_source
The source of the fog varying output by a pre-rasterization shader.
Definition: vkd3d_shader.h:634
vkd3d_shader_d3dbc_constant_register
Symbolic register indices for mapping uniform constant register sets in legacy Direct3D bytecode to c...
Definition: vkd3d_shader.h:1288
struct vkd3d_shader_parameter_specialization_constant specialization_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT.
Definition: vkd3d_shader.h:1268
unsigned int resource_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:1356
enum vkd3d_shader_source_type source_type
Format of the input code passed in source.
Definition: vkd3d_shader.h:1693
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:1409
A description of a DXBC section.
Definition: vkd3d_shader.h:2737
unsigned int register_index
Register index.
Definition: vkd3d_shader.h:2692
The resource is visible only to the geometry shader.
Definition: vkd3d_shader.h:468
A common structure describing the bind point of a descriptor or descriptor array in the target enviro...
Definition: vkd3d_shader.h:531
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
Definition: vkd3d_shader.h:1726
Use buffer textures for buffer UAVs.
Definition: vkd3d_shader.h:155
void(* PFN_vkd3d_shader_free_dxbc)(struct vkd3d_shader_dxbc_desc *dxbc)
Type of vkd3d_shader_free_dxbc().
Definition: vkd3d_shader.h:3626
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO.
Definition: vkd3d_shader.h:2853
IEEE double-precision floating-point.
Definition: vkd3d_shader.h:2272
Definition: vkd3d_shader.h:1465
vkd3d_shader_spirv_environment
Definition: vkd3d_shader.h:1720
size_t section_count
The number of sections contained in the DXBC.
Definition: vkd3d_shader.h:2767
Bump-mapping luminance offset.
Definition: vkd3d_shader.h:1088
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...
16-bit unsigned integer.
Definition: vkd3d_shader.h:2591
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1687
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1509
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.
Definition: vkd3d_shader.h:1791
Definition: vkd3d_shader.h:2151
16-bit unsigned integer.
Definition: vkd3d_shader.h:2665
enum vkd3d_shader_parameter_type type
How the parameter will be provided to the shader.
Definition: vkd3d_shader.h:1251
Render target; SV_Target in Direct3D.
Definition: vkd3d_shader.h:2630
The descriptor is a UAV resource, on which the shader performs atomic ops.
Definition: vkd3d_shader.h:2300
Describes a single shader descriptor; returned as part of struct vkd3d_shader_scan_descriptor_info.
Definition: vkd3d_shader.h:2311
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2501
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:667
The linkage of a parameter specified through a uniform buffer, used in struct vkd3d_shader_parameter1...
Definition: vkd3d_shader.h:1192
const struct vkd3d_shader_resource_binding * bindings
Pointer to an array of bindings for shader resource descriptors.
Definition: vkd3d_shader.h:1445
unsigned int version
The DXBC version.
Definition: vkd3d_shader.h:2763
16-bit signed integer.
Definition: vkd3d_shader.h:2593
Causes compiler to convert SM1-3 semantics to corresponding System Value semantics, when compiling HLSL sources for SM4+ targets.
Definition: vkd3d_shader.h:222
value is a member of enum vkd3d_shader_compile_option_buffer_uav.
Definition: vkd3d_shader.h:329
The SPIR-V target environment supports zero-initializing workgroup memory.
Definition: vkd3d_shader.h:299
unsigned int register_index
Register index of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:1388
A chained structure containing descriptor offsets.
Definition: vkd3d_shader.h:1504
size_t size
The total size of the DXBC blob.
Definition: vkd3d_shader.h:2765
vkd3d_shader_compile_option_buffer_uav
Determines how buffer UAVs are stored.
Definition: vkd3d_shader.h:152
Definition: vkd3d_shader.h:1476
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...
unsigned int count
Size of this descriptor array, or 1 if a single descriptor.
Definition: vkd3d_shader.h:2335
unsigned int stream_index
Stream index of a geometry shader output semantic.
Definition: vkd3d_shader.h:2683
Sample index; SV_SampleIndex in Direct3D.
Definition: vkd3d_shader.h:2622
16-bit floating-point.
Definition: vkd3d_shader.h:2659
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
struct vkd3d_shader_signature_element * elements
Pointer to an array of varyings.
Definition: vkd3d_shader.h:2716
Instance ID; SV_InstanceID in Direct3D.
Definition: vkd3d_shader.h:2618
const void * next
Input; optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2378
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:1882
The fog interpolation factor is 2^-(k * c).
Definition: vkd3d_shader.h:592
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().
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
A mask of enabled clip planes.
Definition: vkd3d_shader.h:816
The structure is a vkd3d_shader_varying_map_info structure.
Definition: vkd3d_shader.h:111
Whether texture coordinate inputs should take their values from the point coordinate.
Definition: vkd3d_shader.h:925
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().
The descriptor has no relevant data type.
Definition: vkd3d_shader.h:2258
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:1372
The descriptor is a UAV resource, whose counter is read from or written to by the shader...
Definition: vkd3d_shader.h:2293
vkd3d_shader_compile_option_formatting_flags
Definition: vkd3d_shader.h:179
The fog interpolation factor is (E - c) * k.
Definition: vkd3d_shader.h:619
vkd3d_shader_api_version
Definition: vkd3d_shader.h:43
Describes the mapping of a Direct3D resource-sampler pair to a combined sampler (i.e.
Definition: vkd3d_shader.h:1350
No messages will be returned.
Definition: vkd3d_shader.h:1662
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
unsigned int register_index
Register index of the descriptor.
Definition: vkd3d_shader.h:2321
This option specifies the origin of fragment coordinates for SPIR-V targets.
Definition: vkd3d_shader.h:374
vkd3d_shader_spirv_extension
Definition: vkd3d_shader.h:1731
vkd3d_shader_sysval_semantic
System value semantic, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:2599
vkd3d_shader_fog_fragment_mode
The factor used to interpolate the fragment output colour with fog.
Definition: vkd3d_shader.h:572
const struct vkd3d_shader_macro * macros
Pointer to an array of predefined macros.
Definition: vkd3d_shader.h:1892
The SPIR-V target environment supports 64-bit integer types.
Definition: vkd3d_shader.h:282
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_HULL_SHADER_TESSELLATION_INFO.
Definition: vkd3d_shader.h:2443
If value is nonzero, do not include debug information in the compiled shader.
Definition: vkd3d_shader.h:327
32-bit signed integer.
Definition: vkd3d_shader.h:2577
struct vkd3d_shader_signature output
The shader output varyings.
Definition: vkd3d_shader.h:2861
Definition: vkd3d_shader.h:1487
No fog interpolation is applied; the output colour is passed through unmodified.
Definition: vkd3d_shader.h:579
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:692
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
The parameter value is provided to the shader via specialization constants.
Definition: vkd3d_shader.h:676
Definition: vkd3d_shader.h:2161
unsigned int parameter_count
Size, in elements, of parameters.
Definition: vkd3d_shader.h:2970
This option specifies the shader features available in the target environment.
Definition: vkd3d_shader.h:384
vkd3d_shader_log_level
Describes the minimum severity of compilation messages returned by vkd3d_shader_compile() and similar...
Definition: vkd3d_shader.h:1659
64-bit signed integer.
Definition: vkd3d_shader.h:2587
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
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:1413
A chained structure describing the tessellation information in a hull shader.
Definition: vkd3d_shader.h:2440
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.
enum vkd3d_shader_component_type component_type
Data type.
Definition: vkd3d_shader.h:2690
enum vkd3d_shader_descriptor_type type
Type of the descriptor (for example, SRV, CBV, UAV, or sampler).
Definition: vkd3d_shader.h:2314
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter.
Definition: vkd3d_shader.h:1121
The sample count of the framebuffer, as returned by the HLSL function GetRenderTargetSampleCount() or...
Definition: vkd3d_shader.h:729
The SPIR-V target environment supports wave operations.
Definition: vkd3d_shader.h:295
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
A D3DX texture shader.
Definition: vkd3d_shader.h:1605
vkd3d_shader_compile_option_pack_matrix_order
Determines how matrices are stored.
Definition: vkd3d_shader.h:198
Vertex position; SV_Position in Direct3D.
Definition: vkd3d_shader.h:2604
A SPIR-V shader in binary form.
Definition: vkd3d_shader.h:1622
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO.
Definition: vkd3d_shader.h:1507
Depth; SV_Depth in Direct3D.
Definition: vkd3d_shader.h:2632
VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages)
Free shader messages allocated by another vkd3d-shader function, such as vkd3d_shader_compile().
The linkage of a specialization constant parameter, used in struct vkd3d_shader_parameter and struct ...
Definition: vkd3d_shader.h:1176
Signed normalized integer.
Definition: vkd3d_shader.h:2262
The structure is a vkd3d_shader_scan_thread_group_size_info structure.
Definition: vkd3d_shader.h:131
Fragment coordinates originate from the lower-left.
Definition: vkd3d_shader.h:271
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:2252
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_THREAD_GROUP_SIZE_INFO.
Definition: vkd3d_shader.h:2463
float f32
The value if the parameter&#39;s data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition: vkd3d_shader.h:1159
High-Level Shader Language source code.
Definition: vkd3d_shader.h:1585
vkd3d_shader_structure_type
The type of a chained structure.
Definition: vkd3d_shader.h:72
Unsigned normalized integer.
Definition: vkd3d_shader.h:2260
const struct vkd3d_shader_descriptor_offset * binding_offsets
Pointer to an array of struct vkd3d_shader_descriptor_offset objects.
Definition: vkd3d_shader.h:1561
The structure is a vkd3d_shader_parameter_info structure.
Definition: vkd3d_shader.h:121
uint32_t shadow_samplers
A mask indicating which samplers should be shadow (i.e.
Definition: vkd3d_shader.h:2563
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. ...
If the source shader has a fog varying, it is not modified.
Definition: vkd3d_shader.h:648
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:1617
const struct vkd3d_shader_descriptor_offset * uav_counter_offsets
Pointer to an array of offsets into the descriptor arrays referenced by the &#39;uav_counters&#39; array in s...
Definition: vkd3d_shader.h:1568
Boolean.
Definition: vkd3d_shader.h:2581
unsigned int register_space
Register space of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:1386
Multisampled 2-dimensional texture.
Definition: vkd3d_shader.h:2231
Use R32(u)i/R32f format for UAVs which are read from.
Definition: vkd3d_shader.h:169
If value is non-zero compilation will produce a child effect using shared object descriptions, as instructed by the "shared" modifier.
Definition: vkd3d_shader.h:395
unsigned int input_mask
The mask consumed by the destination register.
Definition: vkd3d_shader.h:2885
unsigned int macro_count
Size, in elements, of macros.
Definition: vkd3d_shader.h:1894
unsigned int varying_count
The number of registers provided in varying_map.
Definition: vkd3d_shader.h:2932
struct vkd3d_shader_parameter_buffer buffer
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Definition: vkd3d_shader.h:1273
uint32_t checksum[4]
A checksum of the DXBC contents.
Definition: vkd3d_shader.h:2758
Fragment coordinates originate from the upper-left.
Definition: vkd3d_shader.h:268
The structure is a vkd3d_shader_d3dbc_source_info structure.
Definition: vkd3d_shader.h:136
enum vkd3d_shader_tessellator_output_primitive output_primitive
The tessellation output primitive.
Definition: vkd3d_shader.h:2448
Alpha test comparison function.
Definition: vkd3d_shader.h:754
This option specifies default matrix packing order for HLSL sources.
Definition: vkd3d_shader.h:356
#define VKD3D_SHADER_SWIZZLE_MASK
A mask selecting one component from a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:2776
unsigned int input_register_index
The register index of the input varying to map this register to.
Definition: vkd3d_shader.h:2883
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
const struct vkd3d_shader_uav_counter_binding * uav_counters
Pointer to an array of bindings for UAV counters.
Definition: vkd3d_shader.h:1460
An individual shader parameter.
Definition: vkd3d_shader.h:1246
uint32_t u32
The value if the parameter&#39;s data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition: vkd3d_shader.h:1154
An &#39;OpenGL Shading Language&#39; shader.
Definition: vkd3d_shader.h:1641
Signed integer.
Definition: vkd3d_shader.h:2264
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...
The varying has no type.
Definition: vkd3d_shader.h:2573
The structure is a vkd3d_shader_hlsl_source_info structure.
Definition: vkd3d_shader.h:91
No system value.
Definition: vkd3d_shader.h:2602
A chained structure describing how a shader expects denormal floating-point values to be handled...
Definition: vkd3d_shader.h:2496
Render target layer; SV_RenderTargetArrayIndex in Direct3D.
Definition: vkd3d_shader.h:2610
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2530
Override the denormal mode for f64 (double) numbers.
Definition: vkd3d_shader.h:435
enum vkd3d_shader_log_level log_level
Minimum severity of messages returned from the shader function.
Definition: vkd3d_shader.h:1712
Definition: vkd3d_shader.h:2036
The structure is a vkd3d_shader_transform_feedback_info structure.
Definition: vkd3d_shader.h:85
Depth, which is guaranteed to be greater than or equal to the current depth; SV_DepthGreaterEqual in ...
Definition: vkd3d_shader.h:2639
value is a member of enum vkd3d_shader_compile_option_typed_uav.
Definition: vkd3d_shader.h:335
unsigned int element_count
Size, in elements, of elements.
Definition: vkd3d_shader.h:2718
vkd3d_shader_resource_type
The type of a shader resource, returned as part of struct vkd3d_shader_descriptor_info.
Definition: vkd3d_shader.h:2217
A mask of projected textures.
Definition: vkd3d_shader.h:1112
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_fragment_coordinate_origin
Determines the origin of fragment coordinates.
Definition: vkd3d_shader.h:264
vkd3d_shader_descriptor_range_flags
Definition: vkd3d_shader.h:2138
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
A single preprocessor macro, passed as part of struct vkd3d_shader_preprocess_info.
Definition: vkd3d_shader.h:1804
enum vkd3d_shader_sysval_semantic sysval_semantic
System value semantic.
Definition: vkd3d_shader.h:2688
A chained structure containing HLSL compilation parameters.
Definition: vkd3d_shader.h:1937
Override the denormal mode for f16 (half) numbers.
Definition: vkd3d_shader.h:421
uint32_t id
The ID of the specialization constant.
Definition: vkd3d_shader.h:1185
unsigned int resource_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:1358
The integer constant register set, i# in Direct3D assembly.
Definition: vkd3d_shader.h:1293
A chained structure describing the interface between a compiled shader and the target environment...
Definition: vkd3d_shader.h:1437
vkd3d_shader_compile_option_feature_flags
Advertises feature availability.
Definition: vkd3d_shader.h:277
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
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO.
Definition: vkd3d_shader.h:2963
10-bit fixed point (2 integer and 8 fractional bits).
Definition: vkd3d_shader.h:2661
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2965
uint32_t offset
The byte offset of the parameter within the buffer.
Definition: vkd3d_shader.h:1202
A chained structure describing the resource-sampler pairs used by a shader.
Definition: vkd3d_shader.h:2420
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1942
enum vkd3d_shader_compile_option_name name
Name of the option.
Definition: vkd3d_shader.h:448
struct vkd3d_shader_signature patch_constant
The shader patch constant varyings.
Definition: vkd3d_shader.h:2864
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...
The parameter value is embedded directly in the shader.
Definition: vkd3d_shader.h:671
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter1.
Definition: vkd3d_shader.h:1146
uint32_t u32
The value if the parameter&#39;s data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition: vkd3d_shader.h:1129
Primitive ID; SV_PrimitiveID in Direct3D.
Definition: vkd3d_shader.h:2616
Bump-mapping luminance scale factor.
Definition: vkd3d_shader.h:1064
struct vkd3d_shader_code source
Input source code or byte code.
Definition: vkd3d_shader.h:1690
64-bit unsigned integer.
Definition: vkd3d_shader.h:2585
The fog interpolation factor is 2^-((k * c)²).
Definition: vkd3d_shader.h:605
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:1336
All messages, including general informational messages, will be returned.
Definition: vkd3d_shader.h:1670
Alpha test reference value.
Definition: vkd3d_shader.h:764
Only fatal errors which prevent successful compilation will be returned.
Definition: vkd3d_shader.h:1664
size_t size
Size of code, in bytes.
Definition: vkd3d_shader.h:497
The resource is visible only to the vertex shader.
Definition: vkd3d_shader.h:462
Fog source.
Definition: vkd3d_shader.h:1016
The descriptor is a constant buffer view.
Definition: vkd3d_shader.h:517
Point size.
Definition: vkd3d_shader.h:859
No particular denormal mode is requested.
Definition: vkd3d_shader.h:2479
This option is used to enable various backward compatibility features.
Definition: vkd3d_shader.h:364
If value is nonzero, empty constant buffers descriptions are written out in the output effect binary...
Definition: vkd3d_shader.h:414
Cull distance; SV_CullDistance in Direct3D.
Definition: vkd3d_shader.h:2608
The structure is a vkd3d_shader_spirv_domain_shader_target_info structure.
Definition: vkd3d_shader.h:81
enum vkd3d_shader_tessellator_partitioning partitioning
The tessellation partitioning mode.
Definition: vkd3d_shader.h:2450
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...
Minimum point size.
Definition: vkd3d_shader.h:882
float f32_vec4[4]
A pointer to the value if the parameter&#39;s data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32_VEC4...
Definition: vkd3d_shader.h:1166
Causes &#39;double&#39; to behave as an alias for &#39;float&#39;.
Definition: vkd3d_shader.h:233
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO.
Definition: vkd3d_shader.h:1440
A generic structure containing a GPU shader, in text or byte-code format.
Definition: vkd3d_shader.h:479
A chained structure which describes how output varyings in this shader stage should be mapped to inpu...
Definition: vkd3d_shader.h:2912
const struct vkd3d_shader_compile_option * options
Pointer to an array of compilation options.
Definition: vkd3d_shader.h:1707
The structure is a vkd3d_shader_scan_signature_info structure.
Definition: vkd3d_shader.h:106
Bump-mapping matrix.
Definition: vkd3d_shader.h:1040
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_COMBINED_RESOURCE_SAMPLER_INFO.
Definition: vkd3d_shader.h:2423
struct vkd3d_shader_combined_resource_sampler_info * combined_samplers
Pointer to an array of resource-sampler pairs.
Definition: vkd3d_shader.h:2428
16-bit IEEE floating-point.
Definition: vkd3d_shader.h:2589
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
Direct3D shader assembly.
Definition: vkd3d_shader.h:1627
The descriptor is a UAV resource, which is read from by the shader.
Definition: vkd3d_shader.h:2295
A chained structure enumerating the descriptors declared by a shader.
Definition: vkd3d_shader.h:2371
The structure is a vkd3d_shader_scan_hull_shader_tessellation_info structure.
Definition: vkd3d_shader.h:126
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:1367
uint32_t tag
The DXBC tag.
Definition: vkd3d_shader.h:2756
The parameter is provided as a 4-dimensional vector of 32-bit floats.
Definition: vkd3d_shader.h:705
unsigned int value
A value associated with the option.
Definition: vkd3d_shader.h:453
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_D3DBC_SOURCE_INFO.
Definition: vkd3d_shader.h:2528
unsigned int count
The size of this descriptor array.
Definition: vkd3d_shader.h:545
enum vkd3d_shader_parameter_name name
The builtin parameter to be mapped.
Definition: vkd3d_shader.h:1249
vkd3d_shader_swizzle_component
Possible values for a single component of a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:2722
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DENORMAL_MODE_INFO.
Definition: vkd3d_shader.h:2499
struct vkd3d_shader_descriptor_info * descriptors
Output; returns a pointer to an array of descriptors.
Definition: vkd3d_shader.h:2381
The descriptor is a sampler.
Definition: vkd3d_shader.h:522
const char * entry_point
Optional pointer to a null-terminated string containing the shader entry point.
Definition: vkd3d_shader.h:1950
vkd3d_shader_denormal_mode
Specifies how denormal floating-point numbers should be treated.
Definition: vkd3d_shader.h:2476
#define VKD3D_SHADER_SWIZZLE_SHIFT(idx)
The offset, in bits, of the nth parameter of a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:2778
vkd3d_shader_source_type
The format of a shader to be compiled or scanned.
Definition: vkd3d_shader.h:1572
unsigned int descriptor_count
Output; size, in elements, of descriptors.
Definition: vkd3d_shader.h:2383
unsigned int register_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:1411
VKD3D_SHADER_API const char * vkd3d_shader_get_version(unsigned int *major, unsigned int *minor)
Returns the current version of this library.
Binary format used by Direct3D 9/10.x/11 effects.
Definition: vkd3d_shader.h:1600
A chained structure containing descriptions of shader inputs and outputs.
Definition: vkd3d_shader.h:2850
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
Dimensionless buffer.
Definition: vkd3d_shader.h:2225
The type is invalid or not applicable for this descriptor.
Definition: vkd3d_shader.h:2223
unsigned int output_signature_index
The signature index (in the output signature) of the output varying.
Definition: vkd3d_shader.h:2881
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_compile_option_typed_uav
Determines how typed UAVs are declared.
Definition: vkd3d_shader.h:166
32-bit unsigned integer.
Definition: vkd3d_shader.h:2575
Description of a shader input or output signature.
Definition: vkd3d_shader.h:2713
Undefined/type-less.
Definition: vkd3d_shader.h:2270
A &#39;Tokenized Program Format&#39; shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1583
Use Unknown format for UAVs which are read from.
Definition: vkd3d_shader.h:174
IEEE single-precision floating-point.
Definition: vkd3d_shader.h:2268
The structure is a vkd3d_shader_scan_combined_resource_sampler_info structure.
Definition: vkd3d_shader.h:116
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
struct vkd3d_shader_signature input
The shader input varyings.
Definition: vkd3d_shader.h:2858
Definition: vkd3d_shader.h:2174
A chained structure containing preprocessing parameters.
Definition: vkd3d_shader.h:1877
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO.
Definition: vkd3d_shader.h:1940
Describes the mapping of a single Direct3D UAV counter.
Definition: vkd3d_shader.h:1380
Non-fatal warnings and fatal errors will be returned.
Definition: vkd3d_shader.h:1666
const char * value
Optional pointer to a null-terminated string containing the expansion of the macro.
Definition: vkd3d_shader.h:1817
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
The structure is a vkd3d_shader_preprocess_info structure.
Definition: vkd3d_shader.h:96
The fog source is the W component of the position output by the vertex shader.
Definition: vkd3d_shader.h:658
2-dimensional array texture.
Definition: vkd3d_shader.h:2239
unsigned int mask
Mask of the register components allocated to this varying.
Definition: vkd3d_shader.h:2694
A &#39;Metal Shading Language&#39; shader.
Definition: vkd3d_shader.h:1650
Definition: vkd3d_shader.h:2075
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
Definition: vkd3d_shader.h:2092
Fog mode used in fragment shaders.
Definition: vkd3d_shader.h:953
This file contains definitions for basic types used by vkd3d libraries.
Denormal values should be preserved.
Definition: vkd3d_shader.h:2481
enum vkd3d_shader_descriptor_type type
The type of this descriptor.
Definition: vkd3d_shader.h:1318
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:1323
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...
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
unsigned int size
Size, in bytes, of the target push constants.
Definition: vkd3d_shader.h:1418
enum vkd3d_shader_denormal_mode f16_denormal_mode
The denormal mode for f16 (half) numbers.
Definition: vkd3d_shader.h:2504
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2465
Interface information regarding a builtin shader parameter.
Definition: vkd3d_shader.h:2960
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.
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:1590
Viewport index; SV_ViewportArrayIndex in Direct3D.
Definition: vkd3d_shader.h:2612
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
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:1578
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO.
Definition: vkd3d_shader.h:1880
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:1369
enum vkd3d_shader_resource_type resource_type
Resource type, if applicable, including its dimension.
Definition: vkd3d_shader.h:2323
Unsigned integer.
Definition: vkd3d_shader.h:2266
A &#39;Tokenized Program Format&#39; shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1637
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO.
Definition: vkd3d_shader.h:2915
vkd3d_shader_minimum_precision
Minimum interpolation precision of a shader varying, returned as part of struct vkd3d_shader_signatur...
Definition: vkd3d_shader.h:2655
unsigned int register_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:1332
The fog source is the Z component of the position output by the vertex shader.
Definition: vkd3d_shader.h:653
value is a member of enum vkd3d_shader_compile_option_formatting_flags.
Definition: vkd3d_shader.h:331
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().
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the UAV counter is visible.
Definition: vkd3d_shader.h:1390
unsigned int combined_sampler_count
The number of resource-sampler pairs in combined_samplers.
Definition: vkd3d_shader.h:2430
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().
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:1334
void(* PFN_vkd3d_shader_free_shader_code)(struct vkd3d_shader_code *code)
Type of vkd3d_shader_free_shader_code().
Definition: vkd3d_shader.h:3585
A description of a DXBC blob, as returned by vkd3d_shader_parse_dxbc().
Definition: vkd3d_shader.h:2750
2-dimensional texture.
Definition: vkd3d_shader.h:2229
unsigned int sampler_index
Register index of the Direct3D sampler.
Definition: vkd3d_shader.h:1365
The resource is visible only to the hull shader.
Definition: vkd3d_shader.h:464
If value is nonzero, write the point size for Vulkan tessellation and geometry shaders.
Definition: vkd3d_shader.h:347
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:1339
unsigned int sampler_space
Register space of the Direct3D sampler.
Definition: vkd3d_shader.h:1363
Definition: vkd3d_shader.h:2118
unsigned int x
The thread group size in the x/y/z direction.
Definition: vkd3d_shader.h:2468
Denormal values should be flushed to zero.
Definition: vkd3d_shader.h:2483
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...
The source shader is not modified.
Definition: vkd3d_shader.h:640
Multisampled 2-dimensional array texture.
Definition: vkd3d_shader.h:2241
float f32
The value if the parameter&#39;s data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition: vkd3d_shader.h:1136
void(* PFN_vkd3d_shader_free_shader_signature)(struct vkd3d_shader_signature *signature)
Type of vkd3d_shader_free_shader_signature().
Definition: vkd3d_shader.h:3616
vkd3d_shader_target_type
The output format of a compiled shader.
Definition: vkd3d_shader.h:1611
64-bit IEEE floating-point.
Definition: vkd3d_shader.h:2583
unsigned int option_count
Size, in elements, of options.
Definition: vkd3d_shader.h:1709
Describes the mapping of a output varying register in a shader stage, to an input varying register in...
Definition: vkd3d_shader.h:2873
End coordinate for linear fog.
Definition: vkd3d_shader.h:979
The descriptor is an unordered access view.
Definition: vkd3d_shader.h:512
Definition: vkd3d_shader.h:2186
enum vkd3d_shader_minimum_precision min_precision
Minimum interpolation precision.
Definition: vkd3d_shader.h:2703
The boolean constant register set, b# in Direct3D assembly.
Definition: vkd3d_shader.h:1295
vkd3d_shader_compile_option_backward_compatibility
Individual options to enable various backward compatibility features.
Definition: vkd3d_shader.h:207
Whether to use flat interpolation for fragment shader colour inputs.
Definition: vkd3d_shader.h:788
A single shader varying, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:2673
1-dimensional array texture.
Definition: vkd3d_shader.h:2237
Ignore the checksum and continue parsing even if it is incorrect.
Definition: vkd3d_shader.h:313
unsigned int semantic_index
Semantic index, or 0 if the semantic is not indexed.
Definition: vkd3d_shader.h:2678
Scale value for fog.
Definition: vkd3d_shader.h:992
Vertex ID; SV_VertexID in Direct3D.
Definition: vkd3d_shader.h:2614
unsigned int flags
Bitwise combination of zero or more members of vkd3d_shader_descriptor_info_flag. ...
Definition: vkd3d_shader.h:2330
enum vkd3d_shader_denormal_mode f64_denormal_mode
The denormal mode for f64 (double) numbers.
Definition: vkd3d_shader.h:2508
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
This structure describes a single resource-sampler pair.
Definition: vkd3d_shader.h:2392
The descriptor is a shader resource view.
Definition: vkd3d_shader.h:507
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2425
vkd3d_shader_compile_option_name
Definition: vkd3d_shader.h:318
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1442
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:1632
Various settings which may affect shader compilation or scanning, passed as part of struct vkd3d_shad...
Definition: vkd3d_shader.h:445
vkd3d_shader_descriptor_info_flag
Additional flags describing a shader descriptor, returned as part of struct vkd3d_shader_descriptor_i...
Definition: vkd3d_shader.h:2287
Fog colour.
Definition: vkd3d_shader.h:966
The parameter is provided as a 32-bit unsigned integer.
Definition: vkd3d_shader.h:696
Clip distance; SV_ClipDistance in Direct3D.
Definition: vkd3d_shader.h:2606
unsigned int used_mask
Subset of mask which the shader reads from or writes to.
Definition: vkd3d_shader.h:2701
Use storage buffers for buffer UAVs.
Definition: vkd3d_shader.h:157
Definition: vkd3d_shader.h:2203
Definition: vkd3d_shader.h:1750
The SPIR-V target environment supports 64-bit floating-point types.
Definition: vkd3d_shader.h:286
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
The resource is visible only to the domain shader.
Definition: vkd3d_shader.h:466
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...
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_COMPILE_INFO.
Definition: vkd3d_shader.h:1681
Override the denormal mode for f32 (float) numbers.
Definition: vkd3d_shader.h:428
unsigned int combined_sampler_count
Size, in elements, of combined_samplers.
Definition: vkd3d_shader.h:1457
The parameter value is provided to the shader as part of a uniform buffer.
Definition: vkd3d_shader.h:683
The structure is a vkd3d_shader_scan_descriptor_info structure.
Definition: vkd3d_shader.h:79
An individual shader parameter.
Definition: vkd3d_shader.h:1217
enum vkd3d_shader_resource_type texture_dimensions[6]
The dimension of each texture bound to the shader.
Definition: vkd3d_shader.h:2543
void(* PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback)
Type of vkd3d_shader_set_log_callback().
Definition: vkd3d_shader.h:3623
struct vkd3d_shader_parameter_immediate_constant1 immediate_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT. ...
Definition: vkd3d_shader.h:1263
The resource is visible only to the compute shader.
Definition: vkd3d_shader.h:473
enum vkd3d_shader_denormal_mode f32_denormal_mode
The denormal mode for f32 (float) numbers.
Definition: vkd3d_shader.h:2506
const char * name
Pointer to a null-terminated string containing the name of a macro.
Definition: vkd3d_shader.h:1811
The structure is a vkd3d_shader_spirv_target_info structure.
Definition: vkd3d_shader.h:83