vkd3d  1.14
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 
61  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_API_VERSION),
62 };
63 
66 {
79 
115 
116  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STRUCTURE_TYPE),
117 };
118 
126 {
131 
132  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV),
133 };
134 
140 {
148 
149  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV),
150 };
151 
153 {
154  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_NONE = 0x00000000,
155  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR = 0x00000001,
156  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT = 0x00000002,
157  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_OFFSETS = 0x00000004,
158  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_HEADER = 0x00000008,
159  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_RAW_IDS = 0x00000010,
166 
167  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FORMATTING_FLAGS),
168 };
169 
172 {
173  VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ROW_MAJOR = 0x00000001,
174  VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_COLUMN_MAJOR = 0x00000002,
175 
176  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER),
177 };
178 
181 {
205 
207 };
208 
215 {
222 
224 };
225 
228 {
246 
247  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLAGS),
248 };
249 
256 {
260 
261  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARSE_DXBC_FLAGS),
262 };
263 
265 {
361 
362  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_NAME),
363 };
364 
371 {
378  unsigned int value;
379 };
380 
383 {
396 
399 
400  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_VISIBILITY),
401 };
402 
405 {
413  const void *code;
415  size_t size;
416 };
417 
420 {
441 
442  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_TYPE),
443 };
444 
450 {
455  unsigned int set;
457  unsigned int binding;
463  unsigned int count;
464 };
465 
466 enum vkd3d_shader_binding_flag
467 {
468  VKD3D_SHADER_BINDING_FLAG_BUFFER = 0x00000001,
469  VKD3D_SHADER_BINDING_FLAG_IMAGE = 0x00000002,
470 
471  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_BINDING_FLAG),
472 };
473 
479 {
480  VKD3D_SHADER_PARAMETER_TYPE_UNKNOWN,
495 
496  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_TYPE),
497 };
498 
504 {
505  VKD3D_SHADER_PARAMETER_DATA_TYPE_UNKNOWN,
517 
518  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_DATA_TYPE),
519 };
520 
526 {
527  VKD3D_SHADER_PARAMETER_NAME_UNKNOWN,
645  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_1,
646  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_2,
647  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_3,
648  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_4,
649  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_5,
650  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_6,
651  VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_7,
737 
738  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_NAME),
739 };
740 
746 {
747  union
748  {
753  uint32_t u32;
760  float f32;
761  } u;
762 };
763 
771 {
772  union
773  {
778  uint32_t u32;
783  float f32;
790  float f32_vec4[4];
791  void *_pointer_pad;
792  uint32_t _pad[4];
793  } u;
794 };
795 
801 {
809  uint32_t id;
810 };
811 
817 {
822  unsigned int set;
824  unsigned int binding;
826  uint32_t offset;
827 };
828 
842 {
843  enum vkd3d_shader_parameter_name name;
844  enum vkd3d_shader_parameter_type type;
845  enum vkd3d_shader_parameter_data_type data_type;
846  union
847  {
848  struct vkd3d_shader_parameter_immediate_constant immediate_constant;
849  struct vkd3d_shader_parameter_specialization_constant specialization_constant;
850  } u;
851 };
852 
871 {
881  union
882  {
898  void *_pointer_pad;
899  uint32_t _pad[4];
900  } u;
901 };
902 
913 {
920 };
921 
938 {
945  unsigned int register_space;
954  unsigned int register_index;
958  unsigned int flags;
959 
962 };
963 
964 #define VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u
965 
973 {
978  unsigned int resource_space;
980  unsigned int resource_index;
985  unsigned int sampler_space;
987  unsigned int sampler_index;
991  unsigned int flags;
992 
995 };
996 
1003 {
1008  unsigned int register_space;
1010  unsigned int register_index;
1013 
1016  unsigned int offset;
1017 };
1018 
1026 {
1031  unsigned int register_space;
1033  unsigned int register_index;
1036 
1038  unsigned int offset;
1040  unsigned int size;
1041 };
1042 
1060 {
1064  const void *next;
1065 
1069  unsigned int binding_count;
1070 
1075 
1080 
1084  unsigned int uav_counter_count;
1085 };
1086 
1088 {
1089  unsigned int stream_index;
1090  const char *semantic_name;
1091  unsigned int semantic_index;
1092  uint8_t component_index;
1093  uint8_t component_count;
1094  uint8_t output_slot;
1095 };
1096 
1097 /* Extends vkd3d_shader_interface_info. */
1099 {
1100  enum vkd3d_shader_structure_type type;
1101  const void *next;
1102 
1103  const struct vkd3d_shader_transform_feedback_element *elements;
1104  unsigned int element_count;
1105  const unsigned int *buffer_strides;
1106  unsigned int buffer_stride_count;
1107 };
1108 
1110 {
1111  unsigned int static_offset;
1112  unsigned int dynamic_offset_index;
1113 };
1114 
1127 {
1131  const void *next;
1132 
1141 
1184 
1191 };
1192 
1195 {
1223 
1224  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SOURCE_TYPE),
1225 };
1226 
1229 {
1240  VKD3D_SHADER_TARGET_SPIRV_TEXT,
1268 
1269  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TARGET_TYPE),
1270 };
1271 
1277 {
1288 
1289  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_LOG_LEVEL),
1290 };
1291 
1296 {
1304  const void *next;
1305 
1307  struct vkd3d_shader_code source;
1308 
1313 
1326  unsigned int option_count;
1327 
1334  const char *source_name;
1335 };
1336 
1338 {
1339  VKD3D_SHADER_SPIRV_ENVIRONMENT_NONE,
1340  VKD3D_SHADER_SPIRV_ENVIRONMENT_OPENGL_4_5,
1341  VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0, /* default target */
1344 
1345  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_ENVIRONMENT),
1346 };
1347 
1349 {
1350  VKD3D_SHADER_SPIRV_EXTENSION_NONE,
1351  VKD3D_SHADER_SPIRV_EXTENSION_EXT_DEMOTE_TO_HELPER_INVOCATION,
1360 
1361  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_EXTENSION),
1362 };
1363 
1364 /* Extends vkd3d_shader_compile_info. */
1366 {
1367  enum vkd3d_shader_structure_type type;
1368  const void *next;
1369 
1370  const char *entry_point; /* "main" if NULL. */
1371 
1372  enum vkd3d_shader_spirv_environment environment;
1373 
1374  const enum vkd3d_shader_spirv_extension *extensions;
1375  unsigned int extension_count;
1376 
1377  const struct vkd3d_shader_parameter *parameters;
1378  unsigned int parameter_count;
1379 
1380  bool dual_source_blending;
1381  const unsigned int *output_swizzles;
1382  unsigned int output_swizzle_count;
1383 };
1384 
1385 enum vkd3d_shader_tessellator_output_primitive
1386 {
1387  VKD3D_SHADER_TESSELLATOR_OUTPUT_POINT = 0x1,
1388  VKD3D_SHADER_TESSELLATOR_OUTPUT_LINE = 0x2,
1389  VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CW = 0x3,
1390  VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 0x4,
1391 
1392  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_OUTPUT_PRIMITIVE),
1393 };
1394 
1395 enum vkd3d_shader_tessellator_partitioning
1396 {
1397  VKD3D_SHADER_TESSELLATOR_PARTITIONING_INTEGER = 0x1,
1398  VKD3D_SHADER_TESSELLATOR_PARTITIONING_POW2 = 0x2,
1399  VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 0x3,
1400  VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 0x4,
1401 
1402  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_PARTITIONING),
1403 };
1404 
1405 /* Extends vkd3d_shader_spirv_target_info. */
1407 {
1408  enum vkd3d_shader_structure_type type;
1409  const void *next;
1410 
1411  enum vkd3d_shader_tessellator_output_primitive output_primitive;
1412  enum vkd3d_shader_tessellator_partitioning partitioning;
1413 };
1414 
1420 {
1426  const char *name;
1432  const char *value;
1433 };
1434 
1463 typedef int (*PFN_vkd3d_shader_open_include)(const char *filename, bool local,
1464  const char *parent_data, void *context, struct vkd3d_shader_code *out);
1479 typedef void (*PFN_vkd3d_shader_close_include)(const struct vkd3d_shader_code *code, void *context);
1480 
1493 {
1497  const void *next;
1498 
1509  unsigned int macro_count;
1510 
1539 };
1540 
1553 {
1557  const void *next;
1558 
1565  const char *entry_point;
1566  struct vkd3d_shader_code secondary_code;
1571  const char *profile;
1572 };
1573 
1574 /* root signature 1.0 */
1575 enum vkd3d_shader_filter
1576 {
1577  VKD3D_SHADER_FILTER_MIN_MAG_MIP_POINT = 0x000,
1578  VKD3D_SHADER_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x001,
1579  VKD3D_SHADER_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x004,
1580  VKD3D_SHADER_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x005,
1581  VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x010,
1582  VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x011,
1583  VKD3D_SHADER_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x014,
1584  VKD3D_SHADER_FILTER_MIN_MAG_MIP_LINEAR = 0x015,
1585  VKD3D_SHADER_FILTER_ANISOTROPIC = 0x055,
1586  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x080,
1587  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x081,
1588  VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x084,
1589  VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x085,
1590  VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x090,
1591  VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x091,
1592  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x094,
1593  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x095,
1594  VKD3D_SHADER_FILTER_COMPARISON_ANISOTROPIC = 0x0d5,
1595  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
1596  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
1597  VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
1598  VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
1599  VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
1600  VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
1601  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
1602  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
1603  VKD3D_SHADER_FILTER_MINIMUM_ANISOTROPIC = 0x155,
1604  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
1605  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
1606  VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
1607  VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
1608  VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
1609  VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
1610  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
1611  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
1612  VKD3D_SHADER_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
1613 
1614  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FILTER),
1615 };
1616 
1617 enum vkd3d_shader_texture_address_mode
1618 {
1619  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_WRAP = 0x1,
1620  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR = 0x2,
1621  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_CLAMP = 0x3,
1622  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_BORDER = 0x4,
1623  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 0x5,
1624 
1625  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TEXTURE_ADDRESS_MODE),
1626 };
1627 
1628 enum vkd3d_shader_comparison_func
1629 {
1630  VKD3D_SHADER_COMPARISON_FUNC_NEVER = 0x1,
1631  VKD3D_SHADER_COMPARISON_FUNC_LESS = 0x2,
1632  VKD3D_SHADER_COMPARISON_FUNC_EQUAL = 0x3,
1633  VKD3D_SHADER_COMPARISON_FUNC_LESS_EQUAL = 0x4,
1634  VKD3D_SHADER_COMPARISON_FUNC_GREATER = 0x5,
1635  VKD3D_SHADER_COMPARISON_FUNC_NOT_EQUAL = 0x6,
1636  VKD3D_SHADER_COMPARISON_FUNC_GREATER_EQUAL = 0x7,
1637  VKD3D_SHADER_COMPARISON_FUNC_ALWAYS = 0x8,
1638 
1639  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPARISON_FUNC),
1640 };
1641 
1642 enum vkd3d_shader_static_border_colour
1643 {
1644  VKD3D_SHADER_STATIC_BORDER_COLOUR_TRANSPARENT_BLACK = 0x0,
1645  VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_BLACK = 0x1,
1646  VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_WHITE = 0x2,
1647 
1648  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STATIC_BORDER_COLOUR),
1649 };
1650 
1652 {
1653  enum vkd3d_shader_filter filter;
1654  enum vkd3d_shader_texture_address_mode address_u;
1655  enum vkd3d_shader_texture_address_mode address_v;
1656  enum vkd3d_shader_texture_address_mode address_w;
1657  float mip_lod_bias;
1658  unsigned int max_anisotropy;
1659  enum vkd3d_shader_comparison_func comparison_func;
1660  enum vkd3d_shader_static_border_colour border_colour;
1661  float min_lod;
1662  float max_lod;
1663  unsigned int shader_register;
1664  unsigned int register_space;
1665  enum vkd3d_shader_visibility shader_visibility;
1666 };
1667 
1669 {
1670  enum vkd3d_shader_descriptor_type range_type;
1671  unsigned int descriptor_count;
1672  unsigned int base_shader_register;
1673  unsigned int register_space;
1674  unsigned int descriptor_table_offset;
1675 };
1676 
1678 {
1679  unsigned int descriptor_range_count;
1680  const struct vkd3d_shader_descriptor_range *descriptor_ranges;
1681 };
1682 
1684 {
1685  unsigned int shader_register;
1686  unsigned int register_space;
1687  unsigned int value_count;
1688 };
1689 
1691 {
1692  unsigned int shader_register;
1693  unsigned int register_space;
1694 };
1695 
1696 enum vkd3d_shader_root_parameter_type
1697 {
1698  VKD3D_SHADER_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0x0,
1699  VKD3D_SHADER_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 0x1,
1700  VKD3D_SHADER_ROOT_PARAMETER_TYPE_CBV = 0x2,
1701  VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV = 0x3,
1702  VKD3D_SHADER_ROOT_PARAMETER_TYPE_UAV = 0x4,
1703 
1704  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_PARAMETER_TYPE),
1705 };
1706 
1708 {
1709  enum vkd3d_shader_root_parameter_type parameter_type;
1710  union
1711  {
1712  struct vkd3d_shader_root_descriptor_table descriptor_table;
1713  struct vkd3d_shader_root_constants constants;
1714  struct vkd3d_shader_root_descriptor descriptor;
1715  } u;
1716  enum vkd3d_shader_visibility shader_visibility;
1717 };
1718 
1719 enum vkd3d_shader_root_signature_flags
1720 {
1721  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_NONE = 0x00,
1722  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x01,
1723  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x02,
1724  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x04,
1725  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x08,
1726  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
1727  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
1728  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
1729 
1730  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_FLAGS),
1731 };
1732 
1734 {
1735  unsigned int parameter_count;
1736  const struct vkd3d_shader_root_parameter *parameters;
1737  unsigned int static_sampler_count;
1738  const struct vkd3d_shader_static_sampler_desc *static_samplers;
1739  enum vkd3d_shader_root_signature_flags flags;
1740 };
1741 
1742 /* root signature 1.1 */
1743 enum vkd3d_shader_root_descriptor_flags
1744 {
1745  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
1746  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
1747  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
1748  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
1749 
1750  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_DESCRIPTOR_FLAGS),
1751 };
1752 
1754 {
1755  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
1756  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
1757  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
1758  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
1759  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
1762 
1763  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_RANGE_FLAGS),
1764 };
1765 
1767 {
1768  enum vkd3d_shader_descriptor_type range_type;
1769  unsigned int descriptor_count;
1770  unsigned int base_shader_register;
1771  unsigned int register_space;
1773  unsigned int descriptor_table_offset;
1774 };
1775 
1777 {
1778  unsigned int descriptor_range_count;
1779  const struct vkd3d_shader_descriptor_range1 *descriptor_ranges;
1780 };
1781 
1783 {
1784  unsigned int shader_register;
1785  unsigned int register_space;
1786  enum vkd3d_shader_root_descriptor_flags flags;
1787 };
1788 
1790 {
1791  enum vkd3d_shader_root_parameter_type parameter_type;
1792  union
1793  {
1794  struct vkd3d_shader_root_descriptor_table1 descriptor_table;
1795  struct vkd3d_shader_root_constants constants;
1796  struct vkd3d_shader_root_descriptor1 descriptor;
1797  } u;
1798  enum vkd3d_shader_visibility shader_visibility;
1799 };
1800 
1802 {
1803  unsigned int parameter_count;
1804  const struct vkd3d_shader_root_parameter1 *parameters;
1805  unsigned int static_sampler_count;
1806  const struct vkd3d_shader_static_sampler_desc *static_samplers;
1807  enum vkd3d_shader_root_signature_flags flags;
1808 };
1809 
1810 enum vkd3d_shader_root_signature_version
1811 {
1812  VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
1813  VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
1814 
1815  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_VERSION),
1816 };
1817 
1819 {
1820  enum vkd3d_shader_root_signature_version version;
1821  union
1822  {
1823  struct vkd3d_shader_root_signature_desc v_1_0;
1824  struct vkd3d_shader_root_signature_desc1 v_1_1;
1825  } u;
1826 };
1827 
1833 {
1859 
1860  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_TYPE),
1861 };
1862 
1868 {
1889 
1890  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_DATA_TYPE),
1891 };
1892 
1898 {
1913 
1914  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_INFO_FLAG),
1915 };
1916 
1922 {
1929  unsigned int register_space;
1931  unsigned int register_index;
1940  unsigned int flags;
1945  unsigned int count;
1946 };
1947 
1982 {
1988  const void *next;
1989 
1993  unsigned int descriptor_count;
1994 };
1995 
2003 {
2004  unsigned int resource_space;
2005  unsigned int resource_index;
2006  unsigned int sampler_space;
2007  unsigned int sampler_index;
2008 };
2009 
2031 {
2035  const void *next;
2036 
2041 };
2042 
2048 {
2063 
2064  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPONENT_TYPE),
2065 };
2066 
2069 {
2092  VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE = 0x0b,
2093  VKD3D_SHADER_SV_TESS_FACTOR_QUADINT = 0x0c,
2094  VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE = 0x0d,
2095  VKD3D_SHADER_SV_TESS_FACTOR_TRIINT = 0x0e,
2096  VKD3D_SHADER_SV_TESS_FACTOR_LINEDET = 0x0f,
2097  VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN = 0x10,
2116 
2117  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SYSVAL_SEMANTIC),
2118 };
2119 
2125 {
2126  VKD3D_SHADER_MINIMUM_PRECISION_NONE = 0,
2135 
2136  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_MINIMUM_PRECISION),
2137 };
2138 
2143 {
2145  const char *semantic_name;
2147  unsigned int semantic_index;
2152  unsigned int stream_index;
2161  unsigned int register_index;
2163  unsigned int mask;
2170  unsigned int used_mask;
2173 };
2174 
2183 {
2187  unsigned int element_count;
2188 };
2189 
2192 {
2193  VKD3D_SHADER_SWIZZLE_X = 0x0,
2194  VKD3D_SHADER_SWIZZLE_Y = 0x1,
2195  VKD3D_SHADER_SWIZZLE_Z = 0x2,
2196  VKD3D_SHADER_SWIZZLE_W = 0x3,
2197 
2198  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SWIZZLE_COMPONENT),
2199 };
2200 
2207 {
2209  uint32_t tag;
2211  struct vkd3d_shader_code data;
2212 };
2213 
2220 {
2225  uint32_t tag;
2227  uint32_t checksum[4];
2232  unsigned int version;
2234  size_t size;
2239 };
2240 
2245 #define VKD3D_SHADER_SWIZZLE_MASK (0xffu)
2247 #define VKD3D_SHADER_SWIZZLE_SHIFT(idx) (8u * (idx))
2248 
2258 #define VKD3D_SHADER_SWIZZLE(x, y, z, w) \
2259  (VKD3D_SHADER_SWIZZLE_ ## x << VKD3D_SHADER_SWIZZLE_SHIFT(0) \
2260  | VKD3D_SHADER_SWIZZLE_ ## y << VKD3D_SHADER_SWIZZLE_SHIFT(1) \
2261  | VKD3D_SHADER_SWIZZLE_ ## z << VKD3D_SHADER_SWIZZLE_SHIFT(2) \
2262  | VKD3D_SHADER_SWIZZLE_ ## w << VKD3D_SHADER_SWIZZLE_SHIFT(3))
2263 
2265 #define VKD3D_SHADER_NO_SWIZZLE VKD3D_SHADER_SWIZZLE(X, Y, Z, W)
2266 
2271 {
2276 }
2277 
2320 {
2324  const void *next;
2325 
2328 
2331 
2334 };
2335 
2343 {
2352  unsigned int input_register_index;
2354  unsigned int input_mask;
2355 };
2356 
2382 {
2386  const void *next;
2387 
2401  unsigned int varying_count;
2402 };
2403 
2430 {
2434  const void *next;
2435 
2439  unsigned int parameter_count;
2440 };
2441 
2442 #ifdef LIBVKD3D_SHADER_SOURCE
2443 # define VKD3D_SHADER_API VKD3D_EXPORT
2444 #else
2445 # define VKD3D_SHADER_API VKD3D_IMPORT
2446 #endif
2447 
2448 #ifndef VKD3D_SHADER_NO_PROTOTYPES
2449 
2461 VKD3D_SHADER_API const char *vkd3d_shader_get_version(unsigned int *major, unsigned int *minor);
2477 VKD3D_SHADER_API const enum vkd3d_shader_source_type *vkd3d_shader_get_supported_source_types(unsigned int *count);
2493  enum vkd3d_shader_source_type source_type, unsigned int *count);
2494 
2561 VKD3D_SHADER_API int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
2562  struct vkd3d_shader_code *out, char **messages);
2570 VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages);
2580 VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
2581 
2617 VKD3D_SHADER_API int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
2618  struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
2629 VKD3D_SHADER_API void vkd3d_shader_free_root_signature(
2630  struct vkd3d_shader_versioned_root_signature_desc *root_signature);
2631 
2661  const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
2662  struct vkd3d_shader_code *dxbc, char **messages);
2684  enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
2685 
2742 VKD3D_SHADER_API int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char **messages);
2753  struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
2754 
2793 VKD3D_SHADER_API int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
2794  struct vkd3d_shader_signature *signature, char **messages);
2815  const struct vkd3d_shader_signature *signature, const char *semantic_name,
2816  unsigned int semantic_index, unsigned int stream_index);
2826 VKD3D_SHADER_API void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature);
2827 
2828 /* 1.3 */
2829 
2863 VKD3D_SHADER_API int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info,
2864  struct vkd3d_shader_code *out, char **messages);
2865 
2876 VKD3D_SHADER_API void vkd3d_shader_set_log_callback(PFN_vkd3d_log callback);
2877 
2889 VKD3D_SHADER_API void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc);
2890 
2920 VKD3D_SHADER_API int vkd3d_shader_parse_dxbc(const struct vkd3d_shader_code *dxbc,
2921  uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages);
2922 
2953 VKD3D_SHADER_API int vkd3d_shader_serialize_dxbc(size_t section_count,
2954  const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages);
2955 
2968 
2994 VKD3D_SHADER_API void vkd3d_shader_build_varying_map(const struct vkd3d_shader_signature *output_signature,
2995  const struct vkd3d_shader_signature *input_signature,
2996  unsigned int *count, struct vkd3d_shader_varying_map *varyings);
2997 
3012 
3013 #endif /* VKD3D_SHADER_NO_PROTOTYPES */
3014 
3016 typedef const char *(*PFN_vkd3d_shader_get_version)(unsigned int *major, unsigned int *minor);
3018 typedef const enum vkd3d_shader_source_type *(*PFN_vkd3d_shader_get_supported_source_types)(unsigned int *count);
3020 typedef const enum vkd3d_shader_target_type *(*PFN_vkd3d_shader_get_supported_target_types)(
3021  enum vkd3d_shader_source_type source_type, unsigned int *count);
3022 
3024 typedef int (*PFN_vkd3d_shader_compile)(const struct vkd3d_shader_compile_info *compile_info,
3025  struct vkd3d_shader_code *out, char **messages);
3027 typedef void (*PFN_vkd3d_shader_free_messages)(char *messages);
3030 
3033  struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
3036 
3039  const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
3040  struct vkd3d_shader_code *dxbc, char **messages);
3041 
3044  enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
3045 
3047 typedef int (*PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages);
3050  struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
3051 
3054  struct vkd3d_shader_signature *signature, char **messages);
3056 typedef struct vkd3d_shader_signature_element * (*PFN_vkd3d_shader_find_signature_element)(
3057  const struct vkd3d_shader_signature *signature, const char *semantic_name,
3058  unsigned int semantic_index, unsigned int stream_index);
3061 
3063 typedef void (*PFN_vkd3d_shader_preprocess)(struct vkd3d_shader_compile_info *compile_info,
3064  struct vkd3d_shader_code *out, char **messages);
3065 
3067 typedef void (*PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback);
3068 
3072 typedef int (*PFN_vkd3d_shader_parse_dxbc)(const struct vkd3d_shader_code *dxbc,
3073  uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages);
3076  const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages);
3077 
3079 typedef void (*PFN_vkd3d_shader_build_varying_map)(const struct vkd3d_shader_signature *output_signature,
3080  const struct vkd3d_shader_signature *input_signature,
3081  unsigned int *count, struct vkd3d_shader_varying_map *varyings);
3084 
3088 
3089 #ifdef __cplusplus
3090 }
3091 #endif /* __cplusplus */
3092 
3093 #endif /* __VKD3D_SHADER_H */
A generic structure containing a GPU shader, in text or byte-code format.
Definition: vkd3d_shader.h:405
const void * code
Pointer to the code.
Definition: vkd3d_shader.h:413
size_t size
Size of code, in bytes.
Definition: vkd3d_shader.h:415
This structure describes a single resource-sampler pair.
Definition: vkd3d_shader.h:2003
Describes the mapping of a Direct3D resource-sampler pair to a combined sampler (i....
Definition: vkd3d_shader.h:973
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:994
unsigned int resource_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:980
unsigned int sampler_index
Register index of the Direct3D sampler.
Definition: vkd3d_shader.h:987
unsigned int sampler_space
Register space of the Direct3D sampler.
Definition: vkd3d_shader.h:985
unsigned int resource_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:978
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:991
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:989
A chained structure containing compilation parameters.
Definition: vkd3d_shader.h:1296
const struct vkd3d_shader_compile_option * options
Pointer to an array of compilation options.
Definition: vkd3d_shader.h:1324
struct vkd3d_shader_code source
Input source code or byte code.
Definition: vkd3d_shader.h:1307
enum vkd3d_shader_log_level log_level
Minimum severity of messages returned from the shader function.
Definition: vkd3d_shader.h:1329
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO.
Definition: vkd3d_shader.h:1298
const char * source_name
Name of the initial source file, which may be used in error messages or debug information.
Definition: vkd3d_shader.h:1334
unsigned int option_count
Size, in elements, of options.
Definition: vkd3d_shader.h:1326
enum vkd3d_shader_source_type source_type
Format of the input code passed in source.
Definition: vkd3d_shader.h:1310
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1304
enum vkd3d_shader_target_type target_type
Desired output format.
Definition: vkd3d_shader.h:1312
Various settings which may affect shader compilation or scanning, passed as part of struct vkd3d_shad...
Definition: vkd3d_shader.h:371
unsigned int value
A value associated with the option.
Definition: vkd3d_shader.h:378
enum vkd3d_shader_compile_option_name name
Name of the option.
Definition: vkd3d_shader.h:373
A common structure describing the bind point of a descriptor or descriptor array in the target enviro...
Definition: vkd3d_shader.h:450
unsigned int binding
The binding index of the descriptor.
Definition: vkd3d_shader.h:457
unsigned int count
The size of this descriptor array.
Definition: vkd3d_shader.h:463
unsigned int set
The set of the descriptor.
Definition: vkd3d_shader.h:455
Describes a single shader descriptor; returned as part of struct vkd3d_shader_scan_descriptor_info.
Definition: vkd3d_shader.h:1922
enum vkd3d_shader_resource_type resource_type
Resource type, if applicable, including its dimension.
Definition: vkd3d_shader.h:1933
unsigned int register_index
Register index of the descriptor.
Definition: vkd3d_shader.h:1931
enum vkd3d_shader_resource_data_type resource_data_type
Data type contained in the resource (for example, float or integer).
Definition: vkd3d_shader.h:1935
enum vkd3d_shader_descriptor_type type
Type of the descriptor (for example, SRV, CBV, UAV, or sampler).
Definition: vkd3d_shader.h:1924
unsigned int count
Size of this descriptor array, or 1 if a single descriptor.
Definition: vkd3d_shader.h:1945
unsigned int flags
Bitwise combination of zero or more members of vkd3d_shader_descriptor_info_flag.
Definition: vkd3d_shader.h:1940
unsigned int register_space
Register space of the resource, or 0 if the shader does not support multiple register spaces.
Definition: vkd3d_shader.h:1929
A chained structure containing descriptor offsets.
Definition: vkd3d_shader.h:1127
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1131
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:1190
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO.
Definition: vkd3d_shader.h:1129
unsigned int descriptor_table_offset
Byte offset within the push constants of an array of 32-bit descriptor array offsets.
Definition: vkd3d_shader.h:1138
unsigned int descriptor_table_count
Size, in elements, of the descriptor table push constant array.
Definition: vkd3d_shader.h:1140
const struct vkd3d_shader_descriptor_offset * binding_offsets
Pointer to an array of struct vkd3d_shader_descriptor_offset objects.
Definition: vkd3d_shader.h:1183
Definition: vkd3d_shader.h:1110
Definition: vkd3d_shader.h:1767
Definition: vkd3d_shader.h:1669
A description of a DXBC blob, as returned by vkd3d_shader_parse_dxbc().
Definition: vkd3d_shader.h:2220
size_t section_count
The number of sections contained in the DXBC.
Definition: vkd3d_shader.h:2236
struct vkd3d_shader_dxbc_section_desc * sections
Descriptions of the sections contained in the DXBC.
Definition: vkd3d_shader.h:2238
uint32_t tag
The DXBC tag.
Definition: vkd3d_shader.h:2225
size_t size
The total size of the DXBC blob.
Definition: vkd3d_shader.h:2234
uint32_t checksum[4]
A checksum of the DXBC contents.
Definition: vkd3d_shader.h:2227
unsigned int version
The DXBC version.
Definition: vkd3d_shader.h:2232
A description of a DXBC section.
Definition: vkd3d_shader.h:2207
uint32_t tag
The section tag.
Definition: vkd3d_shader.h:2209
struct vkd3d_shader_code data
The contents of the section.
Definition: vkd3d_shader.h:2211
A chained structure containing HLSL compilation parameters.
Definition: vkd3d_shader.h:1553
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO.
Definition: vkd3d_shader.h:1555
const char * profile
Pointer to a null-terminated string containing the target shader profile.
Definition: vkd3d_shader.h:1571
const char * entry_point
Optional pointer to a null-terminated string containing the shader entry point.
Definition: vkd3d_shader.h:1565
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1557
A chained structure describing the interface between a compiled shader and the target environment.
Definition: vkd3d_shader.h:1060
unsigned int combined_sampler_count
Size, in elements, of combined_samplers.
Definition: vkd3d_shader.h:1079
const struct vkd3d_shader_resource_binding * bindings
Pointer to an array of bindings for shader resource descriptors.
Definition: vkd3d_shader.h:1067
const struct vkd3d_shader_push_constant_buffer * push_constant_buffers
Pointer to an array of bindings for push constant buffers.
Definition: vkd3d_shader.h:1072
const struct vkd3d_shader_uav_counter_binding * uav_counters
Pointer to an array of bindings for UAV counters.
Definition: vkd3d_shader.h:1082
unsigned int binding_count
Size, in elements, of bindings.
Definition: vkd3d_shader.h:1069
unsigned int push_constant_buffer_count
Size, in elements, of push_constant_buffers.
Definition: vkd3d_shader.h:1074
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1064
const struct vkd3d_shader_combined_resource_sampler * combined_samplers
Pointer to an array of bindings for combined samplers.
Definition: vkd3d_shader.h:1077
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO.
Definition: vkd3d_shader.h:1062
unsigned int uav_counter_count
Size, in elements, of uav_counters.
Definition: vkd3d_shader.h:1084
A single preprocessor macro, passed as part of struct vkd3d_shader_preprocess_info.
Definition: vkd3d_shader.h:1420
const char * name
Pointer to a null-terminated string containing the name of a macro.
Definition: vkd3d_shader.h:1426
const char * value
Optional pointer to a null-terminated string containing the expansion of the macro.
Definition: vkd3d_shader.h:1432
An individual shader parameter.
Definition: vkd3d_shader.h:871
enum vkd3d_shader_parameter_type type
How the parameter will be provided to the shader.
Definition: vkd3d_shader.h:875
struct vkd3d_shader_parameter_immediate_constant1 immediate_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT.
Definition: vkd3d_shader.h:887
struct vkd3d_shader_parameter_specialization_constant specialization_constant
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT.
Definition: vkd3d_shader.h:892
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:880
struct vkd3d_shader_parameter_buffer buffer
Additional information if type is VKD3D_SHADER_PARAMETER_TYPE_BUFFER.
Definition: vkd3d_shader.h:897
enum vkd3d_shader_parameter_name name
The builtin parameter to be mapped.
Definition: vkd3d_shader.h:873
The linkage of a parameter specified through a uniform buffer, used in struct vkd3d_shader_parameter1...
Definition: vkd3d_shader.h:817
uint32_t offset
The byte offset of the parameter within the buffer.
Definition: vkd3d_shader.h:826
unsigned int set
The set of the uniform buffer descriptor.
Definition: vkd3d_shader.h:822
unsigned int binding
The binding index of the uniform buffer descriptor.
Definition: vkd3d_shader.h:824
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter1.
Definition: vkd3d_shader.h:771
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:790
uint32_t u32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition: vkd3d_shader.h:778
float f32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition: vkd3d_shader.h:783
The value of an immediate constant parameter, used in struct vkd3d_shader_parameter.
Definition: vkd3d_shader.h:746
float f32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32.
Definition: vkd3d_shader.h:760
uint32_t u32
The value if the parameter's data type is VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32.
Definition: vkd3d_shader.h:753
Interface information regarding a builtin shader parameter.
Definition: vkd3d_shader.h:2430
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO.
Definition: vkd3d_shader.h:2432
unsigned int parameter_count
Size, in elements, of parameters.
Definition: vkd3d_shader.h:2439
const struct vkd3d_shader_parameter1 * parameters
Pointer to an array of dynamic parameters for this shader instance.
Definition: vkd3d_shader.h:2437
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2434
The linkage of a specialization constant parameter, used in struct vkd3d_shader_parameter and struct ...
Definition: vkd3d_shader.h:801
uint32_t id
The ID of the specialization constant.
Definition: vkd3d_shader.h:809
An individual shader parameter.
Definition: vkd3d_shader.h:842
A chained structure containing preprocessing parameters.
Definition: vkd3d_shader.h:1493
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO.
Definition: vkd3d_shader.h:1495
const struct vkd3d_shader_macro * macros
Pointer to an array of predefined macros.
Definition: vkd3d_shader.h:1507
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:1538
unsigned int macro_count
Size, in elements, of macros.
Definition: vkd3d_shader.h:1509
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:1523
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:1533
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1497
Describes the mapping of a Direct3D constant buffer to a range of push constants in the target enviro...
Definition: vkd3d_shader.h:1026
unsigned int register_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:1033
unsigned int size
Size, in bytes, of the target push constants.
Definition: vkd3d_shader.h:1040
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:1031
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:1035
unsigned int offset
Offset, in bytes, of the target push constants.
Definition: vkd3d_shader.h:1038
Describes the mapping of a single resource or resource array to its binding point in the target envir...
Definition: vkd3d_shader.h:938
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:961
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:945
enum vkd3d_shader_descriptor_type type
The type of this descriptor.
Definition: vkd3d_shader.h:940
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:958
unsigned int register_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:954
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:956
Definition: vkd3d_shader.h:1684
Definition: vkd3d_shader.h:1783
Definition: vkd3d_shader.h:1777
Definition: vkd3d_shader.h:1678
Definition: vkd3d_shader.h:1691
Definition: vkd3d_shader.h:1790
Definition: vkd3d_shader.h:1708
Definition: vkd3d_shader.h:1802
Definition: vkd3d_shader.h:1734
A chained structure describing the resource-sampler pairs used by a shader.
Definition: vkd3d_shader.h:2031
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_COMBINED_RESOURCE_SAMPLER_INFO.
Definition: vkd3d_shader.h:2033
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2035
unsigned int combined_sampler_count
The number of resource-sampler pairs in combined_samplers.
Definition: vkd3d_shader.h:2040
struct vkd3d_shader_combined_resource_sampler_info * combined_samplers
Pointer to an array of resource-sampler pairs.
Definition: vkd3d_shader.h:2038
A chained structure enumerating the descriptors declared by a shader.
Definition: vkd3d_shader.h:1982
enum vkd3d_shader_structure_type type
Input; must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO.
Definition: vkd3d_shader.h:1986
const void * next
Input; optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1988
unsigned int descriptor_count
Output; size, in elements, of descriptors.
Definition: vkd3d_shader.h:1993
struct vkd3d_shader_descriptor_info * descriptors
Output; returns a pointer to an array of descriptors.
Definition: vkd3d_shader.h:1991
A chained structure containing descriptions of shader inputs and outputs.
Definition: vkd3d_shader.h:2320
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2324
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO.
Definition: vkd3d_shader.h:2322
struct vkd3d_shader_signature patch_constant
The shader patch constant varyings.
Definition: vkd3d_shader.h:2333
struct vkd3d_shader_signature output
The shader output varyings.
Definition: vkd3d_shader.h:2330
struct vkd3d_shader_signature input
The shader input varyings.
Definition: vkd3d_shader.h:2327
A single shader varying, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:2143
unsigned int semantic_index
Semantic index, or 0 if the semantic is not indexed.
Definition: vkd3d_shader.h:2147
enum vkd3d_shader_sysval_semantic sysval_semantic
System value semantic.
Definition: vkd3d_shader.h:2157
unsigned int stream_index
Stream index of a geometry shader output semantic.
Definition: vkd3d_shader.h:2152
unsigned int used_mask
Subset of mask which the shader reads from or writes to.
Definition: vkd3d_shader.h:2170
enum vkd3d_shader_component_type component_type
Data type.
Definition: vkd3d_shader.h:2159
enum vkd3d_shader_minimum_precision min_precision
Minimum interpolation precision.
Definition: vkd3d_shader.h:2172
unsigned int register_index
Register index.
Definition: vkd3d_shader.h:2161
unsigned int mask
Mask of the register components allocated to this varying.
Definition: vkd3d_shader.h:2163
const char * semantic_name
Semantic name.
Definition: vkd3d_shader.h:2145
Description of a shader input or output signature.
Definition: vkd3d_shader.h:2183
struct vkd3d_shader_signature_element * elements
Pointer to an array of varyings.
Definition: vkd3d_shader.h:2185
unsigned int element_count
Size, in elements, of elements.
Definition: vkd3d_shader.h:2187
Definition: vkd3d_shader.h:1407
Definition: vkd3d_shader.h:1366
Definition: vkd3d_shader.h:1652
Definition: vkd3d_shader.h:1088
Definition: vkd3d_shader.h:1099
Describes the mapping of a single Direct3D UAV counter.
Definition: vkd3d_shader.h:1003
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the UAV counter is visible.
Definition: vkd3d_shader.h:1012
unsigned int register_space
Register space of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:1008
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:1015
unsigned int register_index
Register index of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:1010
A chained structure which describes how output varyings in this shader stage should be mapped to inpu...
Definition: vkd3d_shader.h:2382
unsigned int varying_count
The number of registers provided in varying_map.
Definition: vkd3d_shader.h:2401
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO.
Definition: vkd3d_shader.h:2384
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:2386
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:2399
Describes the mapping of a output varying register in a shader stage, to an input varying register in...
Definition: vkd3d_shader.h:2343
unsigned int input_register_index
The register index of the input varying to map this register to.
Definition: vkd3d_shader.h:2352
unsigned int input_mask
The mask consumed by the destination register.
Definition: vkd3d_shader.h:2354
unsigned int output_signature_index
The signature index (in the output signature) of the output varying.
Definition: vkd3d_shader.h:2350
Definition: vkd3d_shader.h:1819
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:913
@ VKD3D_SHADER_D3DBC_BOOL_CONSTANT_REGISTER
The boolean constant register set, b# in Direct3D assembly.
Definition: vkd3d_shader.h:919
@ VKD3D_SHADER_D3DBC_FLOAT_CONSTANT_REGISTER
The float constant register set, c# in Direct3D assembly.
Definition: vkd3d_shader.h:915
@ VKD3D_SHADER_D3DBC_INT_CONSTANT_REGISTER
The integer constant register set, i# in Direct3D assembly.
Definition: vkd3d_shader.h:917
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:265
@ 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:352
@ VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV
value is a member of enum vkd3d_shader_compile_option_typed_uav.
Definition: vkd3d_shader.h:281
@ VKD3D_SHADER_COMPILE_OPTION_BACKWARD_COMPATIBILITY
This option is used to enable various backward compatibility features.
Definition: vkd3d_shader.h:310
@ VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER
This option specifies default matrix packing order for HLSL sources.
Definition: vkd3d_shader.h:302
@ 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:341
@ VKD3D_SHADER_COMPILE_OPTION_API_VERSION
value is a member of enum vkd3d_shader_api_version.
Definition: vkd3d_shader.h:279
@ 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:293
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV
value is a member of enum vkd3d_shader_compile_option_buffer_uav.
Definition: vkd3d_shader.h:275
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN
This option specifies the origin of fragment coordinates for SPIR-V targets.
Definition: vkd3d_shader.h:320
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE
This option specifies the shader features available in the target environment.
Definition: vkd3d_shader.h:330
@ VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG
If value is nonzero, do not include debug information in the compiled shader.
Definition: vkd3d_shader.h:273
@ 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:360
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING
value is a member of enum vkd3d_shader_compile_option_formatting_flags.
Definition: vkd3d_shader.h:277
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:2268
vkd3d_shader_compile_option_formatting_flags
Definition: vkd3d_shader.h:153
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES
Emit the signatures when disassembling a shader.
Definition: vkd3d_shader.h:165
void(* PFN_vkd3d_shader_free_dxbc)(struct vkd3d_shader_dxbc_desc *dxbc)
Type of vkd3d_shader_free_dxbc().
Definition: vkd3d_shader.h:3070
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:3043
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:3079
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:1868
@ VKD3D_SHADER_RESOURCE_DATA_DOUBLE
IEEE double-precision floating-point.
Definition: vkd3d_shader.h:1882
@ VKD3D_SHADER_RESOURCE_DATA_MIXED
Undefined/type-less.
Definition: vkd3d_shader.h:1880
@ VKD3D_SHADER_RESOURCE_DATA_SNORM
Signed normalized integer.
Definition: vkd3d_shader.h:1872
@ VKD3D_SHADER_RESOURCE_DATA_CONTINUED
Continuation of the previous component.
Definition: vkd3d_shader.h:1888
@ VKD3D_SHADER_RESOURCE_DATA_UINT
Unsigned integer.
Definition: vkd3d_shader.h:1876
@ VKD3D_SHADER_RESOURCE_DATA_FLOAT
IEEE single-precision floating-point.
Definition: vkd3d_shader.h:1878
@ VKD3D_SHADER_RESOURCE_DATA_UNORM
Unsigned normalized integer.
Definition: vkd3d_shader.h:1870
@ VKD3D_SHADER_RESOURCE_DATA_INT
Signed integer.
Definition: vkd3d_shader.h:1874
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:479
@ VKD3D_SHADER_PARAMETER_TYPE_BUFFER
The parameter value is provided to the shader as part of a uniform buffer.
Definition: vkd3d_shader.h:494
@ VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT
The parameter value is provided to the shader via specialization constants.
Definition: vkd3d_shader.h:487
@ VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT
The parameter value is embedded directly in the shader.
Definition: vkd3d_shader.h:482
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:1463
vkd3d_shader_compile_option_fragment_coordinate_origin
Determines the origin of fragment coordinates.
Definition: vkd3d_shader.h:215
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_LOWER_LEFT
Fragment coordinates originate from the lower-left.
Definition: vkd3d_shader.h:221
@ VKD3D_SHADER_COMPILE_OPTION_FRAGMENT_COORDINATE_ORIGIN_UPPER_LEFT
Fragment coordinates originate from the upper-left.
Definition: vkd3d_shader.h:218
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_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:504
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32_VEC4
The parameter is provided as a 4-dimensional vector of 32-bit floats.
Definition: vkd3d_shader.h:516
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32
The parameter is provided as a 32-bit unsigned integer.
Definition: vkd3d_shader.h:507
@ VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32
The parameter is provided as a 32-bit float.
Definition: vkd3d_shader.h:509
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:3075
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:1479
vkd3d_shader_descriptor_info_flag
Additional flags describing a shader descriptor, returned as part of struct vkd3d_shader_descriptor_i...
Definition: vkd3d_shader.h:1898
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER
The descriptor is a raw (byte-addressed) buffer.
Definition: vkd3d_shader.h:1912
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ
The descriptor is a UAV resource, which is read from by the shader.
Definition: vkd3d_shader.h:1905
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_ATOMICS
The descriptor is a UAV resource, on which the shader performs atomic ops.
Definition: vkd3d_shader.h:1910
@ 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:1903
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE
The descriptor is a comparison sampler.
Definition: vkd3d_shader.h:1907
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:181
@ VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_MAP_SEMANTIC_NAMES
Causes compiler to convert SM1-3 semantics to corresponding System Value semantics,...
Definition: vkd3d_shader.h:193
@ VKD3D_SHADER_COMPILE_OPTION_DOUBLE_AS_FLOAT_ALIAS
Causes 'double' to behave as an alias for 'float'.
Definition: vkd3d_shader.h:204
void(* PFN_vkd3d_shader_free_shader_signature)(struct vkd3d_shader_signature *signature)
Type of vkd3d_shader_free_shader_signature().
Definition: vkd3d_shader.h:3060
int(* PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages)
Type of vkd3d_shader_scan().
Definition: vkd3d_shader.h:3047
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:3035
vkd3d_shader_sysval_semantic
System value semantic, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:2069
@ VKD3D_SHADER_SV_VERTEX_ID
Vertex ID; SV_VertexID in Direct3D.
Definition: vkd3d_shader.h:2083
@ VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX
Render target layer; SV_RenderTargetArrayIndex in Direct3D.
Definition: vkd3d_shader.h:2079
@ 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:2113
@ VKD3D_SHADER_SV_PRIMITIVE_ID
Primitive ID; SV_PrimitiveID in Direct3D.
Definition: vkd3d_shader.h:2085
@ VKD3D_SHADER_SV_COVERAGE
Sample mask; SV_Coverage in Direct3D.
Definition: vkd3d_shader.h:2103
@ VKD3D_SHADER_SV_CULL_DISTANCE
Cull distance; SV_CullDistance in Direct3D.
Definition: vkd3d_shader.h:2077
@ VKD3D_SHADER_SV_DEPTH
Depth; SV_Depth in Direct3D.
Definition: vkd3d_shader.h:2101
@ VKD3D_SHADER_SV_TARGET
Render target; SV_Target in Direct3D.
Definition: vkd3d_shader.h:2099
@ VKD3D_SHADER_SV_NONE
No system value.
Definition: vkd3d_shader.h:2071
@ VKD3D_SHADER_SV_IS_FRONT_FACE
Whether the triangle is front-facing; SV_IsFrontFace in Direct3D.
Definition: vkd3d_shader.h:2089
@ VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX
Viewport index; SV_ViewportArrayIndex in Direct3D.
Definition: vkd3d_shader.h:2081
@ 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:2108
@ VKD3D_SHADER_SV_INSTANCE_ID
Instance ID; SV_InstanceID in Direct3D.
Definition: vkd3d_shader.h:2087
@ VKD3D_SHADER_SV_CLIP_DISTANCE
Clip distance; SV_ClipDistance in Direct3D.
Definition: vkd3d_shader.h:2075
@ VKD3D_SHADER_SV_SAMPLE_INDEX
Sample index; SV_SampleIndex in Direct3D.
Definition: vkd3d_shader.h:2091
@ VKD3D_SHADER_SV_STENCIL_REF
Stencil reference; SV_StencilRef in Direct3D.
Definition: vkd3d_shader.h:2115
@ VKD3D_SHADER_SV_POSITION
Vertex position; SV_Position in Direct3D.
Definition: vkd3d_shader.h:2073
vkd3d_shader_source_type
The format of a shader to be compiled or scanned.
Definition: vkd3d_shader.h:1195
@ VKD3D_SHADER_SOURCE_DXBC_DXIL
A 'DirectX Intermediate Language' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1217
@ VKD3D_SHADER_SOURCE_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:1212
@ VKD3D_SHADER_SOURCE_HLSL
High-Level Shader Language source code.
Definition: vkd3d_shader.h:1207
@ VKD3D_SHADER_SOURCE_FX
Binary format used by Direct3D 9/10.x/11 effects.
Definition: vkd3d_shader.h:1222
@ VKD3D_SHADER_SOURCE_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1205
@ VKD3D_SHADER_SOURCE_NONE
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:1200
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:256
@ VKD3D_SHADER_PARSE_DXBC_IGNORE_CHECKSUM
Ignore the checksum and continue parsing even if it is incorrect.
Definition: vkd3d_shader.h:259
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:1277
@ VKD3D_SHADER_LOG_NONE
No messages will be returned.
Definition: vkd3d_shader.h:1279
@ VKD3D_SHADER_LOG_ERROR
Only fatal errors which prevent successful compilation will be returned.
Definition: vkd3d_shader.h:1281
@ VKD3D_SHADER_LOG_WARNING
Non-fatal warnings and fatal errors will be returned.
Definition: vkd3d_shader.h:1283
@ VKD3D_SHADER_LOG_INFO
All messages, including general informational messages, will be returned.
Definition: vkd3d_shader.h:1287
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_structure_type
The type of a chained structure.
Definition: vkd3d_shader.h:66
@ VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO
The structure is a vkd3d_shader_transform_feedback_info structure.
Definition: vkd3d_shader.h:78
@ 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:109
@ VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO
The structure is a vkd3d_shader_compile_info structure.
Definition: vkd3d_shader.h:68
@ VKD3D_SHADER_STRUCTURE_TYPE_PARAMETER_INFO
The structure is a vkd3d_shader_parameter_info structure.
Definition: vkd3d_shader.h:114
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO
The structure is a vkd3d_shader_scan_descriptor_info structure.
Definition: vkd3d_shader.h:72
@ 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:74
@ VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO
The structure is a vkd3d_shader_descriptor_offset_info structure.
Definition: vkd3d_shader.h:94
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_SIGNATURE_INFO
The structure is a vkd3d_shader_scan_signature_info structure.
Definition: vkd3d_shader.h:99
@ VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO
The structure is a vkd3d_shader_preprocess_info structure.
Definition: vkd3d_shader.h:89
@ VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO
The structure is a vkd3d_shader_interface_info structure.
Definition: vkd3d_shader.h:70
@ VKD3D_SHADER_STRUCTURE_TYPE_VARYING_MAP_INFO
The structure is a vkd3d_shader_varying_map_info structure.
Definition: vkd3d_shader.h:104
@ VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO
The structure is a vkd3d_shader_spirv_target_info structure.
Definition: vkd3d_shader.h:76
@ VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO
The structure is a vkd3d_shader_hlsl_source_info structure.
Definition: vkd3d_shader.h:84
vkd3d_shader_visibility
Describes which shader stages a resource is visible to.
Definition: vkd3d_shader.h:383
@ VKD3D_SHADER_VISIBILITY_DOMAIN
The resource is visible only to the domain shader.
Definition: vkd3d_shader.h:391
@ VKD3D_SHADER_VISIBILITY_COMPUTE
The resource is visible only to the compute shader.
Definition: vkd3d_shader.h:398
@ VKD3D_SHADER_VISIBILITY_PIXEL
The resource is visible only to the pixel shader.
Definition: vkd3d_shader.h:395
@ VKD3D_SHADER_VISIBILITY_ALL
The resource is visible to all shader stages.
Definition: vkd3d_shader.h:385
@ VKD3D_SHADER_VISIBILITY_GEOMETRY
The resource is visible only to the geometry shader.
Definition: vkd3d_shader.h:393
@ VKD3D_SHADER_VISIBILITY_VERTEX
The resource is visible only to the vertex shader.
Definition: vkd3d_shader.h:387
@ VKD3D_SHADER_VISIBILITY_HULL
The resource is visible only to the hull shader.
Definition: vkd3d_shader.h:389
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:1349
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_FRAGMENT_SHADER_INTERLOCK
Definition: vkd3d_shader.h:1359
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_STENCIL_EXPORT
Definition: vkd3d_shader.h:1355
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_VIEWPORT_INDEX_LAYER
Definition: vkd3d_shader.h:1357
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_DESCRIPTOR_INDEXING
Definition: vkd3d_shader.h:1353
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:2048
@ VKD3D_SHADER_COMPONENT_INT
32-bit signed integer.
Definition: vkd3d_shader.h:2054
@ VKD3D_SHADER_COMPONENT_UINT
32-bit unsigned integer.
Definition: vkd3d_shader.h:2052
@ VKD3D_SHADER_COMPONENT_DOUBLE
64-bit IEEE floating-point.
Definition: vkd3d_shader.h:2060
@ VKD3D_SHADER_COMPONENT_UINT64
64-bit unsigned integer.
Definition: vkd3d_shader.h:2062
@ VKD3D_SHADER_COMPONENT_FLOAT
32-bit IEEE floating-point.
Definition: vkd3d_shader.h:2056
@ VKD3D_SHADER_COMPONENT_VOID
The varying has no type.
Definition: vkd3d_shader.h:2050
@ VKD3D_SHADER_COMPONENT_BOOL
Boolean.
Definition: vkd3d_shader.h:2058
vkd3d_shader_descriptor_type
The type of a shader resource descriptor.
Definition: vkd3d_shader.h:420
@ VKD3D_SHADER_DESCRIPTOR_TYPE_UAV
The descriptor is an unordered access view.
Definition: vkd3d_shader.h:430
@ VKD3D_SHADER_DESCRIPTOR_TYPE_CBV
The descriptor is a constant buffer view.
Definition: vkd3d_shader.h:435
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
The descriptor is a sampler.
Definition: vkd3d_shader.h:440
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
The descriptor is a shader resource view.
Definition: vkd3d_shader.h:425
#define VKD3D_SHADER_SWIZZLE_MASK
A mask selecting one component from a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:2245
vkd3d_shader_resource_type
The type of a shader resource, returned as part of struct vkd3d_shader_descriptor_info.
Definition: vkd3d_shader.h:1833
@ VKD3D_SHADER_RESOURCE_NONE
The type is invalid or not applicable for this descriptor.
Definition: vkd3d_shader.h:1838
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DARRAY
2-dimensional array texture.
Definition: vkd3d_shader.h:1854
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMS
Multisampled 2-dimensional texture.
Definition: vkd3d_shader.h:1846
@ VKD3D_SHADER_RESOURCE_TEXTURE_3D
3-dimensional texture.
Definition: vkd3d_shader.h:1848
@ VKD3D_SHADER_RESOURCE_TEXTURE_1DARRAY
1-dimensional array texture.
Definition: vkd3d_shader.h:1852
@ VKD3D_SHADER_RESOURCE_BUFFER
Dimensionless buffer.
Definition: vkd3d_shader.h:1840
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBE
Cubemap texture.
Definition: vkd3d_shader.h:1850
@ VKD3D_SHADER_RESOURCE_TEXTURE_1D
1-dimensional texture.
Definition: vkd3d_shader.h:1842
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
Cubemap array texture.
Definition: vkd3d_shader.h:1858
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
Multisampled 2-dimensional array texture.
Definition: vkd3d_shader.h:1856
@ VKD3D_SHADER_RESOURCE_TEXTURE_2D
2-dimensional texture.
Definition: vkd3d_shader.h:1844
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:3032
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:3038
vkd3d_shader_compile_option_typed_uav
Determines how typed UAVs are declared.
Definition: vkd3d_shader.h:140
@ VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV_READ_FORMAT_UNKNOWN
Use Unknown format for UAVs which are read from.
Definition: vkd3d_shader.h:147
@ 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:142
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:3072
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:2192
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:3024
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:3049
vkd3d_shader_descriptor_range_flags
Definition: vkd3d_shader.h:1754
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS
Definition: vkd3d_shader.h:1761
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:2247
void(* PFN_vkd3d_shader_free_messages)(char *messages)
Type of vkd3d_shader_free_messages().
Definition: vkd3d_shader.h:3027
vkd3d_shader_minimum_precision
Minimum interpolation precision of a shader varying, returned as part of struct vkd3d_shader_signatur...
Definition: vkd3d_shader.h:2125
@ VKD3D_SHADER_MINIMUM_PRECISION_UINT_16
16-bit unsigned integer.
Definition: vkd3d_shader.h:2134
@ VKD3D_SHADER_MINIMUM_PRECISION_FIXED_8_2
10-bit fixed point (2 integer and 8 fractional bits).
Definition: vkd3d_shader.h:2130
@ VKD3D_SHADER_MINIMUM_PRECISION_FLOAT_16
16-bit floating-point.
Definition: vkd3d_shader.h:2128
@ VKD3D_SHADER_MINIMUM_PRECISION_INT_16
16-bit signed integer.
Definition: vkd3d_shader.h:2132
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:3083
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:3053
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:3063
vkd3d_shader_target_type
The output format of a compiled shader.
Definition: vkd3d_shader.h:1229
@ VKD3D_SHADER_TARGET_SPIRV_BINARY
A SPIR-V shader in binary form.
Definition: vkd3d_shader.h:1239
@ VKD3D_SHADER_TARGET_D3D_ASM
Direct3D shader assembly.
Definition: vkd3d_shader.h:1244
@ VKD3D_SHADER_TARGET_NONE
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:1234
@ VKD3D_SHADER_TARGET_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:1254
@ VKD3D_SHADER_TARGET_GLSL
An 'OpenGL Shading Language' shader.
Definition: vkd3d_shader.h:1258
@ VKD3D_SHADER_TARGET_MSL
A 'Metal Shading Language' shader.
Definition: vkd3d_shader.h:1267
@ VKD3D_SHADER_TARGET_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:1249
@ VKD3D_SHADER_TARGET_FX
Binary format used by Direct3D 9/10.x/11 effects profiles.
Definition: vkd3d_shader.h:1263
void(* PFN_vkd3d_shader_free_shader_code)(struct vkd3d_shader_code *code)
Type of vkd3d_shader_free_shader_code().
Definition: vkd3d_shader.h:3029
vkd3d_shader_compile_option_pack_matrix_order
Determines how matrices are stored.
Definition: vkd3d_shader.h:172
vkd3d_shader_spirv_environment
Definition: vkd3d_shader.h:1338
@ VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_1
Definition: vkd3d_shader.h:1343
vkd3d_shader_compile_option_feature_flags
Advertises feature availability.
Definition: vkd3d_shader.h:228
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_WAVE_OPS
The SPIR-V target environment supports wave operations.
Definition: vkd3d_shader.h:245
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64
The SPIR-V target environment supports 64-bit integer types.
Definition: vkd3d_shader.h:232
@ VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64
The SPIR-V target environment supports 64-bit floating-point types.
Definition: vkd3d_shader.h:236
void(* PFN_vkd3d_shader_set_log_callback)(PFN_vkd3d_log callback)
Type of vkd3d_shader_set_log_callback().
Definition: vkd3d_shader.h:3067
vkd3d_shader_parameter_name
Names a specific shader parameter, used in struct vkd3d_shader_parameter and struct vkd3d_shader_para...
Definition: vkd3d_shader.h:526
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SPRITE
Whether texture coordinate inputs should take their values from the point coordinate.
Definition: vkd3d_shader.h:736
@ 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:540
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC
Alpha test comparison function.
Definition: vkd3d_shader.h:565
@ VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF
Alpha test reference value.
Definition: vkd3d_shader.h:575
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MAX
Maximum point size.
Definition: vkd3d_shader.h:703
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE_MIN
Minimum point size.
Definition: vkd3d_shader.h:693
@ VKD3D_SHADER_PARAMETER_NAME_POINT_SIZE
Point size.
Definition: vkd3d_shader.h:670
@ VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_0
Clip plane values.
Definition: vkd3d_shader.h:644
@ VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION
Whether to use flat interpolation for fragment shader colour inputs.
Definition: vkd3d_shader.h:599
@ VKD3D_SHADER_PARAMETER_NAME_CLIP_PLANE_MASK
A mask of enabled clip planes.
Definition: vkd3d_shader.h:627
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:3086
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:126
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_TEXEL_BUFFER
Use buffer textures for buffer UAVs.
Definition: vkd3d_shader.h:128
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_BUFFER
Use storage buffers for buffer UAVs.
Definition: vkd3d_shader.h:130
This file contains definitions for basic types used by vkd3d libraries.