vkd3d  1.3
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 <vkd3d_types.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* __cplusplus */
29 
43 {
44  VKD3D_SHADER_API_VERSION_1_0,
45  VKD3D_SHADER_API_VERSION_1_1,
46  VKD3D_SHADER_API_VERSION_1_2,
47  VKD3D_SHADER_API_VERSION_1_3,
48 };
49 
52 {
65 
81 
82  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STRUCTURE_TYPE),
83 };
84 
92 {
97 
98  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV),
99 };
100 
101 enum vkd3d_shader_compile_option_formatting_flags
102 {
103  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_NONE = 0x00000000,
104  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR = 0x00000001,
105  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT = 0x00000002,
106  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_OFFSETS = 0x00000004,
107  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_HEADER = 0x00000008,
108  VKD3D_SHADER_COMPILE_OPTION_FORMATTING_RAW_IDS = 0x00000010,
109 
110  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FORMATTING_FLAGS),
111 };
112 
114 {
129 
130  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_NAME),
131 };
132 
139 {
146  unsigned int value;
147 };
148 
151 {
164 
167 
168  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_VISIBILITY),
169 };
170 
173 {
181  const void *code;
183  size_t size;
184 };
185 
188 {
209 
210  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_TYPE),
211 };
212 
218 {
223  unsigned int set;
225  unsigned int binding;
231  unsigned int count;
232 };
233 
234 enum vkd3d_shader_binding_flag
235 {
236  VKD3D_SHADER_BINDING_FLAG_BUFFER = 0x00000001,
237  VKD3D_SHADER_BINDING_FLAG_IMAGE = 0x00000002,
238 
239  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_BINDING_FLAG),
240 };
241 
242 enum vkd3d_shader_parameter_type
243 {
244  VKD3D_SHADER_PARAMETER_TYPE_UNKNOWN,
245  VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT,
246  VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT,
247 
248  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_TYPE),
249 };
250 
251 enum vkd3d_shader_parameter_data_type
252 {
253  VKD3D_SHADER_PARAMETER_DATA_TYPE_UNKNOWN,
254  VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32,
255 
256  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_DATA_TYPE),
257 };
258 
259 enum vkd3d_shader_parameter_name
260 {
261  VKD3D_SHADER_PARAMETER_NAME_UNKNOWN,
262  VKD3D_SHADER_PARAMETER_NAME_RASTERIZER_SAMPLE_COUNT,
263 
264  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_PARAMETER_NAME),
265 };
266 
268 {
269  union
270  {
271  uint32_t u32;
272  } u;
273 };
274 
276 {
277  uint32_t id;
278 };
279 
281 {
282  enum vkd3d_shader_parameter_name name;
283  enum vkd3d_shader_parameter_type type;
284  enum vkd3d_shader_parameter_data_type data_type;
285  union
286  {
287  struct vkd3d_shader_parameter_immediate_constant immediate_constant;
288  struct vkd3d_shader_parameter_specialization_constant specialization_constant;
289  } u;
290 };
291 
308 {
315  unsigned int register_space;
317  unsigned int register_index;
321  unsigned int flags;
322 
325 };
326 
327 #define VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u
328 
336 {
341  unsigned int resource_space;
343  unsigned int resource_index;
348  unsigned int sampler_space;
350  unsigned int sampler_index;
354  unsigned int flags;
355 
358 };
359 
366 {
371  unsigned int register_space;
373  unsigned int register_index;
376 
379  unsigned int offset;
380 };
381 
389 {
394  unsigned int register_space;
396  unsigned int register_index;
399 
401  unsigned int offset;
403  unsigned int size;
404 };
405 
423 {
427  const void *next;
428 
432  unsigned int binding_count;
433 
438 
443 
447  unsigned int uav_counter_count;
448 };
449 
451 {
452  unsigned int stream_index;
453  const char *semantic_name;
454  unsigned int semantic_index;
455  uint8_t component_index;
456  uint8_t component_count;
457  uint8_t output_slot;
458 };
459 
460 /* Extends vkd3d_shader_interface_info. */
462 {
463  enum vkd3d_shader_structure_type type;
464  const void *next;
465 
466  const struct vkd3d_shader_transform_feedback_element *elements;
467  unsigned int element_count;
468  const unsigned int *buffer_strides;
469  unsigned int buffer_stride_count;
470 };
471 
473 {
474  unsigned int static_offset;
475  unsigned int dynamic_offset_index;
476 };
477 
490 {
494  const void *next;
495 
504 
547 
554 };
555 
558 {
576 
577  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SOURCE_TYPE),
578 };
579 
582 {
593  VKD3D_SHADER_TARGET_SPIRV_TEXT,
612 
613  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TARGET_TYPE),
614 };
615 
621 {
632 
633  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_LOG_LEVEL),
634 };
635 
640 {
648  const void *next;
649 
652 
657 
670  unsigned int option_count;
671 
678  const char *source_name;
679 };
680 
681 enum vkd3d_shader_spirv_environment
682 {
683  VKD3D_SHADER_SPIRV_ENVIRONMENT_NONE,
684  VKD3D_SHADER_SPIRV_ENVIRONMENT_OPENGL_4_5,
685  VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0, /* default target */
686 
687  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_ENVIRONMENT),
688 };
689 
691 {
692  VKD3D_SHADER_SPIRV_EXTENSION_NONE,
693  VKD3D_SHADER_SPIRV_EXTENSION_EXT_DEMOTE_TO_HELPER_INVOCATION,
698 
699  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SPIRV_EXTENSION),
700 };
701 
702 /* Extends vkd3d_shader_compile_info. */
704 {
705  enum vkd3d_shader_structure_type type;
706  const void *next;
707 
708  const char *entry_point; /* "main" if NULL. */
709 
710  enum vkd3d_shader_spirv_environment environment;
711 
712  const enum vkd3d_shader_spirv_extension *extensions;
713  unsigned int extension_count;
714 
715  const struct vkd3d_shader_parameter *parameters;
716  unsigned int parameter_count;
717 
718  bool dual_source_blending;
719  const unsigned int *output_swizzles;
720  unsigned int output_swizzle_count;
721 };
722 
723 enum vkd3d_shader_tessellator_output_primitive
724 {
725  VKD3D_SHADER_TESSELLATOR_OUTPUT_POINT = 0x1,
726  VKD3D_SHADER_TESSELLATOR_OUTPUT_LINE = 0x2,
727  VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CW = 0x3,
728  VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 0x4,
729 
730  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_OUTPUT_PRIMITIVE),
731 };
732 
733 enum vkd3d_shader_tessellator_partitioning
734 {
735  VKD3D_SHADER_TESSELLATOR_PARTITIONING_INTEGER = 0x1,
736  VKD3D_SHADER_TESSELLATOR_PARTITIONING_POW2 = 0x2,
737  VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 0x3,
738  VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 0x4,
739 
740  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TESSELLATOR_PARTITIONING),
741 };
742 
743 /* Extends vkd3d_shader_spirv_target_info. */
745 {
746  enum vkd3d_shader_structure_type type;
747  const void *next;
748 
749  enum vkd3d_shader_tessellator_output_primitive output_primitive;
750  enum vkd3d_shader_tessellator_partitioning partitioning;
751 };
752 
758 {
764  const char *name;
770  const char *value;
771 };
772 
801 typedef int (*PFN_vkd3d_shader_open_include)(const char *filename, bool local,
802  const char *parent_data, void *context, struct vkd3d_shader_code *out);
816 typedef void (*PFN_vkd3d_shader_close_include)(const struct vkd3d_shader_code *code, void *context);
817 
830 {
834  const void *next;
835 
844  const struct vkd3d_shader_macro *macros;
846  unsigned int macro_count;
847 
876 };
877 
890 {
894  const void *next;
895 
902  const char *entry_point;
903  struct vkd3d_shader_code secondary_code;
908  const char *profile;
909 };
910 
911 /* root signature 1.0 */
912 enum vkd3d_shader_filter
913 {
914  VKD3D_SHADER_FILTER_MIN_MAG_MIP_POINT = 0x000,
915  VKD3D_SHADER_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x001,
916  VKD3D_SHADER_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x004,
917  VKD3D_SHADER_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x005,
918  VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x010,
919  VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x011,
920  VKD3D_SHADER_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x014,
921  VKD3D_SHADER_FILTER_MIN_MAG_MIP_LINEAR = 0x015,
922  VKD3D_SHADER_FILTER_ANISOTROPIC = 0x055,
923  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x080,
924  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x081,
925  VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x084,
926  VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x085,
927  VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x090,
928  VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x091,
929  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x094,
930  VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x095,
931  VKD3D_SHADER_FILTER_COMPARISON_ANISOTROPIC = 0x0d5,
932  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
933  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
934  VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
935  VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
936  VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
937  VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
938  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
939  VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
940  VKD3D_SHADER_FILTER_MINIMUM_ANISOTROPIC = 0x155,
941  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
942  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
943  VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
944  VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
945  VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
946  VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
947  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
948  VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
949  VKD3D_SHADER_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
950 
951  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_FILTER),
952 };
953 
954 enum vkd3d_shader_texture_address_mode
955 {
956  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_WRAP = 0x1,
957  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR = 0x2,
958  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_CLAMP = 0x3,
959  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_BORDER = 0x4,
960  VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 0x5,
961 
962  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_TEXTURE_ADDRESS_MODE),
963 };
964 
965 enum vkd3d_shader_comparison_func
966 {
967  VKD3D_SHADER_COMPARISON_FUNC_NEVER = 0x1,
968  VKD3D_SHADER_COMPARISON_FUNC_LESS = 0x2,
969  VKD3D_SHADER_COMPARISON_FUNC_EQUAL = 0x3,
970  VKD3D_SHADER_COMPARISON_FUNC_LESS_EQUAL = 0x4,
971  VKD3D_SHADER_COMPARISON_FUNC_GREATER = 0x5,
972  VKD3D_SHADER_COMPARISON_FUNC_NOT_EQUAL = 0x6,
973  VKD3D_SHADER_COMPARISON_FUNC_GREATER_EQUAL = 0x7,
974  VKD3D_SHADER_COMPARISON_FUNC_ALWAYS = 0x8,
975 
976  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPARISON_FUNC),
977 };
978 
979 enum vkd3d_shader_static_border_colour
980 {
981  VKD3D_SHADER_STATIC_BORDER_COLOUR_TRANSPARENT_BLACK = 0x0,
982  VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_BLACK = 0x1,
983  VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_WHITE = 0x2,
984 
985  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_STATIC_BORDER_COLOUR),
986 };
987 
989 {
990  enum vkd3d_shader_filter filter;
991  enum vkd3d_shader_texture_address_mode address_u;
992  enum vkd3d_shader_texture_address_mode address_v;
993  enum vkd3d_shader_texture_address_mode address_w;
994  float mip_lod_bias;
995  unsigned int max_anisotropy;
996  enum vkd3d_shader_comparison_func comparison_func;
997  enum vkd3d_shader_static_border_colour border_colour;
998  float min_lod;
999  float max_lod;
1000  unsigned int shader_register;
1001  unsigned int register_space;
1002  enum vkd3d_shader_visibility shader_visibility;
1003 };
1004 
1006 {
1007  enum vkd3d_shader_descriptor_type range_type;
1008  unsigned int descriptor_count;
1009  unsigned int base_shader_register;
1010  unsigned int register_space;
1011  unsigned int descriptor_table_offset;
1012 };
1013 
1015 {
1016  unsigned int descriptor_range_count;
1017  const struct vkd3d_shader_descriptor_range *descriptor_ranges;
1018 };
1019 
1021 {
1022  unsigned int shader_register;
1023  unsigned int register_space;
1024  unsigned int value_count;
1025 };
1026 
1028 {
1029  unsigned int shader_register;
1030  unsigned int register_space;
1031 };
1032 
1033 enum vkd3d_shader_root_parameter_type
1034 {
1035  VKD3D_SHADER_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0x0,
1036  VKD3D_SHADER_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 0x1,
1037  VKD3D_SHADER_ROOT_PARAMETER_TYPE_CBV = 0x2,
1038  VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV = 0x3,
1039  VKD3D_SHADER_ROOT_PARAMETER_TYPE_UAV = 0x4,
1040 
1041  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_PARAMETER_TYPE),
1042 };
1043 
1045 {
1046  enum vkd3d_shader_root_parameter_type parameter_type;
1047  union
1048  {
1049  struct vkd3d_shader_root_descriptor_table descriptor_table;
1050  struct vkd3d_shader_root_constants constants;
1051  struct vkd3d_shader_root_descriptor descriptor;
1052  } u;
1053  enum vkd3d_shader_visibility shader_visibility;
1054 };
1055 
1056 enum vkd3d_shader_root_signature_flags
1057 {
1058  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_NONE = 0x00,
1059  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x01,
1060  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x02,
1061  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x04,
1062  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x08,
1063  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
1064  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
1065  VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
1066 
1067  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_FLAGS),
1068 };
1069 
1071 {
1072  unsigned int parameter_count;
1073  const struct vkd3d_shader_root_parameter *parameters;
1074  unsigned int static_sampler_count;
1075  const struct vkd3d_shader_static_sampler_desc *static_samplers;
1076  enum vkd3d_shader_root_signature_flags flags;
1077 };
1078 
1079 /* root signature 1.1 */
1080 enum vkd3d_shader_root_descriptor_flags
1081 {
1082  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
1083  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
1084  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
1085  VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
1086 
1087  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_DESCRIPTOR_FLAGS),
1088 };
1089 
1090 enum vkd3d_shader_descriptor_range_flags
1091 {
1092  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
1093  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
1094  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
1095  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
1096  VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
1097 
1098  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_RANGE_FLAGS),
1099 };
1100 
1102 {
1103  enum vkd3d_shader_descriptor_type range_type;
1104  unsigned int descriptor_count;
1105  unsigned int base_shader_register;
1106  unsigned int register_space;
1107  enum vkd3d_shader_descriptor_range_flags flags;
1108  unsigned int descriptor_table_offset;
1109 };
1110 
1112 {
1113  unsigned int descriptor_range_count;
1114  const struct vkd3d_shader_descriptor_range1 *descriptor_ranges;
1115 };
1116 
1118 {
1119  unsigned int shader_register;
1120  unsigned int register_space;
1121  enum vkd3d_shader_root_descriptor_flags flags;
1122 };
1123 
1125 {
1126  enum vkd3d_shader_root_parameter_type parameter_type;
1127  union
1128  {
1129  struct vkd3d_shader_root_descriptor_table1 descriptor_table;
1130  struct vkd3d_shader_root_constants constants;
1131  struct vkd3d_shader_root_descriptor1 descriptor;
1132  } u;
1133  enum vkd3d_shader_visibility shader_visibility;
1134 };
1135 
1137 {
1138  unsigned int parameter_count;
1139  const struct vkd3d_shader_root_parameter1 *parameters;
1140  unsigned int static_sampler_count;
1141  const struct vkd3d_shader_static_sampler_desc *static_samplers;
1142  enum vkd3d_shader_root_signature_flags flags;
1143 };
1144 
1145 enum vkd3d_shader_root_signature_version
1146 {
1147  VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
1148  VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
1149 
1150  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_ROOT_SIGNATURE_VERSION),
1151 };
1152 
1154 {
1155  enum vkd3d_shader_root_signature_version version;
1156  union
1157  {
1158  struct vkd3d_shader_root_signature_desc v_1_0;
1159  struct vkd3d_shader_root_signature_desc1 v_1_1;
1160  } u;
1161 };
1162 
1168 {
1194 
1195  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_TYPE),
1196 };
1197 
1203 {
1224 
1225  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_RESOURCE_DATA_TYPE),
1226 };
1227 
1233 {
1243 
1244  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_DESCRIPTOR_INFO_FLAG),
1245 };
1246 
1252 {
1259  unsigned int register_space;
1261  unsigned int register_index;
1270  unsigned int flags;
1275  unsigned int count;
1276 };
1277 
1284 {
1290  const void *next;
1291 
1295  unsigned int descriptor_count;
1296 };
1297 
1303 {
1316 
1317  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPONENT_TYPE),
1318 };
1319 
1322 {
1345  VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE = 0x0b,
1346  VKD3D_SHADER_SV_TESS_FACTOR_QUADINT = 0x0c,
1347  VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE = 0x0d,
1348  VKD3D_SHADER_SV_TESS_FACTOR_TRIINT = 0x0e,
1349  VKD3D_SHADER_SV_TESS_FACTOR_LINEDET = 0x0f,
1350  VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN = 0x10,
1351 
1352  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SYSVAL_SEMANTIC),
1353 };
1354 
1360 {
1361  VKD3D_SHADER_MINIMUM_PRECISION_NONE = 0,
1370 
1371  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_MINIMUM_PRECISION),
1372 };
1373 
1378 {
1380  const char *semantic_name;
1382  unsigned int semantic_index;
1387  unsigned int stream_index;
1396  unsigned int register_index;
1398  unsigned int mask;
1405  unsigned int used_mask;
1408 };
1409 
1418 {
1422  unsigned int element_count;
1423 };
1424 
1427 {
1428  VKD3D_SHADER_SWIZZLE_X = 0x0,
1429  VKD3D_SHADER_SWIZZLE_Y = 0x1,
1430  VKD3D_SHADER_SWIZZLE_Z = 0x2,
1431  VKD3D_SHADER_SWIZZLE_W = 0x3,
1432 
1433  VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_SWIZZLE_COMPONENT),
1434 };
1435 
1440 #define VKD3D_SHADER_SWIZZLE_MASK (0xffu)
1441 
1442 #define VKD3D_SHADER_SWIZZLE_SHIFT(idx) (8u * (idx))
1443 
1453 #define VKD3D_SHADER_SWIZZLE(x, y, z, w) \
1454  vkd3d_shader_create_swizzle(VKD3D_SHADER_SWIZZLE_ ## x, \
1455  VKD3D_SHADER_SWIZZLE_ ## y, \
1456  VKD3D_SHADER_SWIZZLE_ ## z, \
1457  VKD3D_SHADER_SWIZZLE_ ## w)
1458 
1460 #define VKD3D_SHADER_NO_SWIZZLE VKD3D_SHADER_SWIZZLE(X, Y, Z, W)
1461 
1466 {
1471 }
1472 
1473 #ifdef LIBVKD3D_SHADER_SOURCE
1474 # define VKD3D_SHADER_API VKD3D_EXPORT
1475 #else
1476 # define VKD3D_SHADER_API VKD3D_IMPORT
1477 #endif
1478 
1479 #ifndef VKD3D_SHADER_NO_PROTOTYPES
1480 
1492 VKD3D_SHADER_API const char *vkd3d_shader_get_version(unsigned int *major, unsigned int *minor);
1508 VKD3D_SHADER_API const enum vkd3d_shader_source_type *vkd3d_shader_get_supported_source_types(unsigned int *count);
1524  enum vkd3d_shader_source_type source_type, unsigned int *count);
1525 
1569 VKD3D_SHADER_API int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
1570  struct vkd3d_shader_code *out, char **messages);
1578 VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages);
1588 VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code);
1589 
1620 VKD3D_SHADER_API int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
1621  struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
1632 VKD3D_SHADER_API void vkd3d_shader_free_root_signature(
1633  struct vkd3d_shader_versioned_root_signature_desc *root_signature);
1634 
1658 VKD3D_SHADER_API int vkd3d_shader_serialize_root_signature(
1659  const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
1660  struct vkd3d_shader_code *dxbc, char **messages);
1682  enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
1683 
1708 VKD3D_SHADER_API int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char **messages);
1718 VKD3D_SHADER_API void vkd3d_shader_free_scan_descriptor_info(
1719  struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
1720 
1745 VKD3D_SHADER_API int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
1746  struct vkd3d_shader_signature *signature, char **messages);
1767  const struct vkd3d_shader_signature *signature, const char *semantic_name,
1768  unsigned int semantic_index, unsigned int stream_index);
1778 VKD3D_SHADER_API void vkd3d_shader_free_shader_signature(struct vkd3d_shader_signature *signature);
1779 
1780 /* 1.3 */
1781 
1806 VKD3D_SHADER_API int vkd3d_shader_preprocess(const struct vkd3d_shader_compile_info *compile_info,
1807  struct vkd3d_shader_code *out, char **messages);
1808 
1809 #endif /* VKD3D_SHADER_NO_PROTOTYPES */
1810 
1812 typedef const char *(*PFN_vkd3d_shader_get_version)(unsigned int *major, unsigned int *minor);
1814 typedef const enum vkd3d_shader_source_type *(*PFN_vkd3d_shader_get_supported_source_types)(unsigned int *count);
1816 typedef const enum vkd3d_shader_target_type *(*PFN_vkd3d_shader_get_supported_target_types)(
1817  enum vkd3d_shader_source_type source_type, unsigned int *count);
1818 
1820 typedef int (*PFN_vkd3d_shader_compile)(const struct vkd3d_shader_compile_info *compile_info,
1821  struct vkd3d_shader_code *out, char **messages);
1823 typedef void (*PFN_vkd3d_shader_free_messages)(char *messages);
1826 
1829  struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages);
1832 
1835  const struct vkd3d_shader_versioned_root_signature_desc *root_signature,
1836  struct vkd3d_shader_code *dxbc, char **messages);
1837 
1840  enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src);
1841 
1843 typedef int (*PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages);
1846  struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info);
1847 
1850  struct vkd3d_shader_signature *signature, char **messages);
1852 typedef struct vkd3d_shader_signature_element * (*PFN_vkd3d_shader_find_signature_element)(
1853  const struct vkd3d_shader_signature *signature, const char *semantic_name,
1854  unsigned int semantic_index, unsigned int stream_index);
1857 
1859 typedef void (*PFN_vkd3d_shader_preprocess)(struct vkd3d_shader_compile_info *compile_info,
1860  struct vkd3d_shader_code *out, char **messages);
1861 
1862 #ifdef __cplusplus
1863 }
1864 #endif /* __cplusplus */
1865 
1866 #endif /* __VKD3D_SHADER_H */
VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV
value is a member of enum vkd3d_shader_compile_option_buffer_uav.
Definition: vkd3d_shader.h:124
vkd3d_shader_create_swizzle
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:1463
vkd3d_shader_compile_info::target_type
enum vkd3d_shader_target_type target_type
Desired output format.
Definition: vkd3d_shader.h:656
PFN_vkd3d_shader_open_include
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:801
vkd3d_shader_code::size
size_t size
Size of code, in bytes.
Definition: vkd3d_shader.h:183
vkd3d_shader_hlsl_source_info::entry_point
const char * entry_point
Optional pointer to a null-terminated string containing the shader entry point.
Definition: vkd3d_shader.h:902
VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO
The structure is a vkd3d_shader_hlsl_source_info structure.
Definition: vkd3d_shader.h:70
vkd3d_shader_signature_element::min_precision
enum vkd3d_shader_minimum_precision min_precision
Minimum interpolation precision.
Definition: vkd3d_shader.h:1407
VKD3D_SHADER_TARGET_NONE
@ VKD3D_SHADER_TARGET_NONE
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:587
vkd3d_shader_spirv_target_info
Definition: vkd3d_shader.h:703
vkd3d_shader_compile_info::source_type
enum vkd3d_shader_source_type source_type
Format of the input code passed in source.
Definition: vkd3d_shader.h:654
vkd3d_shader_macro::name
const char * name
Pointer to a null-terminated string containing the name of a macro.
Definition: vkd3d_shader.h:764
vkd3d_shader_compile_option
Various settings which may affect shader compilation or scanning, passed as part of struct vkd3d_shad...
Definition: vkd3d_shader.h:138
vkd3d_shader_compile
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_TARGET_D3D_BYTECODE
@ VKD3D_SHADER_TARGET_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:602
vkd3d_shader_uav_counter_binding::binding
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:378
VKD3D_SHADER_RESOURCE_DATA_SNORM
@ VKD3D_SHADER_RESOURCE_DATA_SNORM
Signed normalized integer.
Definition: vkd3d_shader.h:1207
vkd3d_shader_resource_binding::register_space
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:315
vkd3d_shader_resource_binding
Describes the mapping of a single resource or resource array to its binding point in the target envir...
Definition: vkd3d_shader.h:307
vkd3d_shader_preprocess
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.
vkd3d_shader_uav_counter_binding::register_space
unsigned int register_space
Register space of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:371
vkd3d_shader_descriptor_offset_info::uav_counter_offsets
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:553
vkd3d_shader_preprocess_info::type
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO.
Definition: vkd3d_shader.h:832
vkd3d_shader_code
A generic structure containing a GPU shader, in text or byte-code format.
Definition: vkd3d_shader.h:172
vkd3d_shader_descriptor_range1
Definition: vkd3d_shader.h:1101
VKD3D_SHADER_RESOURCE_DATA_UINT
@ VKD3D_SHADER_RESOURCE_DATA_UINT
Unsigned integer.
Definition: vkd3d_shader.h:1211
vkd3d_shader_push_constant_buffer::offset
unsigned int offset
Offset, in bytes, of the target push constants.
Definition: vkd3d_shader.h:401
VKD3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
Multisampled 2-dimensional array texture.
Definition: vkd3d_shader.h:1191
vkd3d_shader_compile_info::source_name
const char * source_name
Name of the initial source file, which may be used in error messages or debug information.
Definition: vkd3d_shader.h:678
VKD3D_SHADER_RESOURCE_DATA_CONTINUED
@ VKD3D_SHADER_RESOURCE_DATA_CONTINUED
Continuation of the previous component.
Definition: vkd3d_shader.h:1223
PFN_vkd3d_shader_free_root_signature
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:1831
vkd3d_shader_compile_info::type
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO.
Definition: vkd3d_shader.h:642
VKD3D_SHADER_VISIBILITY_VERTEX
@ VKD3D_SHADER_VISIBILITY_VERTEX
The resource is visible only to the vertex shader.
Definition: vkd3d_shader.h:155
vkd3d_shader_combined_resource_sampler::flags
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:354
vkd3d_shader_hlsl_source_info::next
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:894
vkd3d_shader_root_descriptor_table1
Definition: vkd3d_shader.h:1111
vkd3d_shader_scan
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_interface_info::type
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO.
Definition: vkd3d_shader.h:425
vkd3d_shader_free_shader_code
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_descriptor_range
Definition: vkd3d_shader.h:1005
vkd3d_shader_descriptor_binding::binding
unsigned int binding
The binding index of the descriptor.
Definition: vkd3d_shader.h:225
VKD3D_SHADER_SOURCE_DXBC_TPF
@ VKD3D_SHADER_SOURCE_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:568
vkd3d_shader_push_constant_buffer::size
unsigned int size
Size, in bytes, of the target push constants.
Definition: vkd3d_shader.h:403
vkd3d_shader_signature_element::stream_index
unsigned int stream_index
Stream index of a geometry shader output semantic.
Definition: vkd3d_shader.h:1387
vkd3d_shader_descriptor_info_flag
vkd3d_shader_descriptor_info_flag
Additional flags describing a shader descriptor, returned as part of struct vkd3d_shader_descriptor_i...
Definition: vkd3d_shader.h:1232
VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO
The structure is a vkd3d_shader_interface_info structure.
Definition: vkd3d_shader.h:56
vkd3d_shader_descriptor_offset_info::type
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO.
Definition: vkd3d_shader.h:492
vkd3d_shader_compile_option::value
unsigned int value
A value associated with the option.
Definition: vkd3d_shader.h:146
vkd3d_shader_interface_info::push_constant_buffer_count
unsigned int push_constant_buffer_count
Size, in elements, of push_constant_buffers.
Definition: vkd3d_shader.h:437
VKD3D_SHADER_SV_PRIMITIVE_ID
@ VKD3D_SHADER_SV_PRIMITIVE_ID
Primtive ID; SV_PrimitiveID in Direct3D.
Definition: vkd3d_shader.h:1338
vkd3d_shader_scan_descriptor_info::descriptors
struct vkd3d_shader_descriptor_info * descriptors
Output; returns a pointer to an array of descriptors.
Definition: vkd3d_shader.h:1293
PFN_vkd3d_shader_free_messages
void(* PFN_vkd3d_shader_free_messages)(char *messages)
Type of vkd3d_shader_free_messages().
Definition: vkd3d_shader.h:1823
vkd3d_shader_versioned_root_signature_desc
Definition: vkd3d_shader.h:1153
vkd3d_shader_combined_resource_sampler
Describes the mapping of a Direct3D resource-sampler pair to a combined sampler (i....
Definition: vkd3d_shader.h:335
vkd3d_shader_find_signature_element
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_log_level
vkd3d_shader_log_level
Describes the minimum severity of compilation messages returned by vkd3d_shader_compile() and similar...
Definition: vkd3d_shader.h:620
PFN_vkd3d_shader_parse_input_signature
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:1849
vkd3d_shader_component_type
vkd3d_shader_component_type
Data type of a shader varying, returned as part of struct vkd3d_shader_signature_element.
Definition: vkd3d_shader.h:1302
VKD3D_SHADER_SV_VERTEX_ID
@ VKD3D_SHADER_SV_VERTEX_ID
Vertex ID; SV_VertexID in Direct3D.
Definition: vkd3d_shader.h:1336
VKD3D_SHADER_SV_CLIP_DISTANCE
@ VKD3D_SHADER_SV_CLIP_DISTANCE
Clip distance; SV_ClipDistance in Direct3D.
Definition: vkd3d_shader.h:1328
vkd3d_shader_descriptor_info::resource_data_type
enum vkd3d_shader_resource_data_type resource_data_type
Data type contained in the resource (for example, float or integer).
Definition: vkd3d_shader.h:1265
PFN_vkd3d_shader_parse_root_signature
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:1828
vkd3d_shader_root_descriptor1
Definition: vkd3d_shader.h:1117
vkd3d_shader_descriptor_info::register_space
unsigned int register_space
Register space of the resource, or 0 if the shader does not support multiple register spaces.
Definition: vkd3d_shader.h:1259
VKD3D_SHADER_SV_SAMPLE_INDEX
@ VKD3D_SHADER_SV_SAMPLE_INDEX
Sample index; SV_SampleIndex in Direct3D.
Definition: vkd3d_shader.h:1344
VKD3D_SHADER_VISIBILITY_DOMAIN
@ VKD3D_SHADER_VISIBILITY_DOMAIN
The resource is visible only to the domain shader.
Definition: vkd3d_shader.h:159
vkd3d_shader_descriptor_type
vkd3d_shader_descriptor_type
The type of a shader resource descriptor.
Definition: vkd3d_shader.h:187
VKD3D_SHADER_VISIBILITY_HULL
@ VKD3D_SHADER_VISIBILITY_HULL
The resource is visible only to the hull shader.
Definition: vkd3d_shader.h:157
VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX
@ VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX
Render target layer; SV_RenderTargetArrayIndex in Direct3D.
Definition: vkd3d_shader.h:1332
VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO
The structure is a vkd3d_shader_scan_descriptor_info structure.
Definition: vkd3d_shader.h:58
vkd3d_shader_resource_data_type
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:1202
VKD3D_SHADER_TARGET_GLSL
@ VKD3D_SHADER_TARGET_GLSL
An 'OpenGL Shading Language' shader.
Definition: vkd3d_shader.h:611
VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG
@ VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG
If value is nonzero, do not include debug information in the compiled shader.
Definition: vkd3d_shader.h:122
vkd3d_shader_compile_option_buffer_uav
vkd3d_shader_compile_option_buffer_uav
Determines how buffer UAVs are stored.
Definition: vkd3d_shader.h:91
VKD3D_SHADER_COMPILE_OPTION_API_VERSION
@ VKD3D_SHADER_COMPILE_OPTION_API_VERSION
value is a member of enum vkd3d_shader_api_version.
Definition: vkd3d_shader.h:128
vkd3d_shader_interface_info::push_constant_buffers
const struct vkd3d_shader_push_constant_buffer * push_constant_buffers
Pointer to an array of bindings for push constant buffers.
Definition: vkd3d_shader.h:435
VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
Cubemap array texture.
Definition: vkd3d_shader.h:1193
VKD3D_SHADER_TARGET_SPIRV_BINARY
@ VKD3D_SHADER_TARGET_SPIRV_BINARY
A SPIR-V shader in binary form.
Definition: vkd3d_shader.h:592
VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_DESCRIPTOR_OFFSET_INFO
The structure is a vkd3d_shader_descriptor_offset_info structure.
Definition: vkd3d_shader.h:80
VKD3D_SHADER_VISIBILITY_ALL
@ VKD3D_SHADER_VISIBILITY_ALL
The resource is visible to all shader stages.
Definition: vkd3d_shader.h:153
vkd3d_shader_root_constants
Definition: vkd3d_shader.h:1020
vkd3d_shader_uav_counter_binding::shader_visibility
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the UAV counter is visible.
Definition: vkd3d_shader.h:375
vkd3d_shader_push_constant_buffer::shader_visibility
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:398
VKD3D_SHADER_TARGET_DXBC_TPF
@ VKD3D_SHADER_TARGET_DXBC_TPF
A 'Tokenized Program Format' shader embedded in a DXBC container.
Definition: vkd3d_shader.h:607
VKD3D_SHADER_RESOURCE_TEXTURE_1DARRAY
@ VKD3D_SHADER_RESOURCE_TEXTURE_1DARRAY
1-dimensional array texture.
Definition: vkd3d_shader.h:1187
vkd3d_shader_scan_descriptor_info::descriptor_count
unsigned int descriptor_count
Output; size, in elements, of descriptors.
Definition: vkd3d_shader.h:1295
VKD3D_SHADER_DESCRIPTOR_TYPE_CBV
@ VKD3D_SHADER_DESCRIPTOR_TYPE_CBV
The descriptor is a constant buffer view.
Definition: vkd3d_shader.h:203
VKD3D_SHADER_RESOURCE_DATA_FLOAT
@ VKD3D_SHADER_RESOURCE_DATA_FLOAT
IEEE single-precision floating-point.
Definition: vkd3d_shader.h:1213
VKD3D_SHADER_LOG_NONE
@ VKD3D_SHADER_LOG_NONE
No messages will be returned.
Definition: vkd3d_shader.h:623
VKD3D_SHADER_SOURCE_D3D_BYTECODE
@ VKD3D_SHADER_SOURCE_D3D_BYTECODE
Legacy Direct3D byte-code.
Definition: vkd3d_shader.h:575
vkd3d_shader_compile_info::next
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:648
vkd3d_shader_root_descriptor
Definition: vkd3d_shader.h:1027
vkd3d_shader_preprocess_info::pfn_close_include
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:870
vkd3d_shader_combined_resource_sampler::sampler_space
unsigned int sampler_space
Register space of the Direct3D sampler.
Definition: vkd3d_shader.h:348
vkd3d_shader_source_type
vkd3d_shader_source_type
The format of a shader to be compiled or scanned.
Definition: vkd3d_shader.h:557
vkd3d_shader_preprocess_info::include_context
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:875
VKD3D_SHADER_TARGET_D3D_ASM
@ VKD3D_SHADER_TARGET_D3D_ASM
Direct3D shader assembly.
Definition: vkd3d_shader.h:597
vkd3d_shader_code::code
const void * code
Pointer to the code.
Definition: vkd3d_shader.h:181
VKD3D_SHADER_SPIRV_EXTENSION_EXT_DESCRIPTOR_INDEXING
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_DESCRIPTOR_INDEXING
Definition: vkd3d_shader.h:695
VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
The descriptor is a shader resource view.
Definition: vkd3d_shader.h:193
PFN_vkd3d_shader_preprocess
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:1859
VKD3D_SHADER_COMPONENT_UINT
@ VKD3D_SHADER_COMPONENT_UINT
32-bit unsigned integer.
Definition: vkd3d_shader.h:1307
vkd3d_shader_get_supported_source_types
VKD3D_SHADER_API enum vkd3d_shader_source_type * vkd3d_shader_get_supported_source_types(unsigned int *count)
Returns the source types supported, with any target type, by vkd3d_shader_compile().
VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE
The descriptor is a comparison sampler.
Definition: vkd3d_shader.h:1242
vkd3d_shader_hlsl_source_info
A chained structure containing HLSL compilation parameters.
Definition: vkd3d_shader.h:889
vkd3d_shader_target_type
vkd3d_shader_target_type
The output format of a compiled shader.
Definition: vkd3d_shader.h:581
vkd3d_shader_parse_root_signature
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...
vkd3d_shader_hlsl_source_info::type
enum vkd3d_shader_structure_type type
Must be set to VKD3D_SHADER_STRUCTURE_TYPE_HLSL_SOURCE_INFO.
Definition: vkd3d_shader.h:892
VKD3D_SHADER_VISIBILITY_PIXEL
@ VKD3D_SHADER_VISIBILITY_PIXEL
The resource is visible only to the pixel shader.
Definition: vkd3d_shader.h:163
vkd3d_shader_hlsl_source_info::profile
const char * profile
Pointer to a null-terminated string containing the target shader profile.
Definition: vkd3d_shader.h:908
VKD3D_SHADER_RESOURCE_TEXTURE_1D
@ VKD3D_SHADER_RESOURCE_TEXTURE_1D
1-dimensional texture.
Definition: vkd3d_shader.h:1177
vkd3d_shader_descriptor_info::type
enum vkd3d_shader_descriptor_type type
Type of the descriptor (for example, SRV, CBV, UAV, or sampler).
Definition: vkd3d_shader.h:1254
VKD3D_SHADER_SWIZZLE_SHIFT
#define VKD3D_SHADER_SWIZZLE_SHIFT(idx)
The offset, in bits, of the nth parameter of a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:1442
VKD3D_SHADER_SV_NONE
@ VKD3D_SHADER_SV_NONE
No system value.
Definition: vkd3d_shader.h:1324
vkd3d_shader_descriptor_offset_info
A chained structure containing descriptor offsets.
Definition: vkd3d_shader.h:489
vkd3d_shader_free_shader_signature
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_RESOURCE_NONE
@ VKD3D_SHADER_RESOURCE_NONE
The type is invalid or not applicable for this descriptor.
Definition: vkd3d_shader.h:1173
vkd3d_shader_spirv_domain_shader_target_info
Definition: vkd3d_shader.h:744
vkd3d_shader_interface_info::combined_samplers
const struct vkd3d_shader_combined_resource_sampler * combined_samplers
Pointer to an array of bindings for combined samplers.
Definition: vkd3d_shader.h:440
vkd3d_shader_compile_option_name
vkd3d_shader_compile_option_name
Definition: vkd3d_shader.h:113
VKD3D_SHADER_VISIBILITY_GEOMETRY
@ VKD3D_SHADER_VISIBILITY_GEOMETRY
The resource is visible only to the geometry shader.
Definition: vkd3d_shader.h:161
VKD3D_SHADER_COMPILE_OPTION_FORMATTING
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING
value is a member of enum vkd3d_shader_compile_option_formatting_flags.
Definition: vkd3d_shader.h:126
VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_DOMAIN_SHADER_TARGET_INFO
@ 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:60
vkd3d_shader_descriptor_info::register_index
unsigned int register_index
Register index of the descriptor.
Definition: vkd3d_shader.h:1261
PFN_vkd3d_shader_close_include
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:816
vkd3d_shader_transform_feedback_info
Definition: vkd3d_shader.h:461
vkd3d_shader_signature_element::semantic_index
unsigned int semantic_index
Semantic index, or 0 if the semantic is not indexed.
Definition: vkd3d_shader.h:1382
VKD3D_SHADER_LOG_WARNING
@ VKD3D_SHADER_LOG_WARNING
Non-fatal warnings and fatal errors will be returned.
Definition: vkd3d_shader.h:627
vkd3d_shader_signature
Description of a shader input or output signature.
Definition: vkd3d_shader.h:1417
vkd3d_shader_signature::elements
struct vkd3d_shader_signature_element * elements
Pointer to an array of varyings.
Definition: vkd3d_shader.h:1420
vkd3d_shader_spirv_extension
vkd3d_shader_spirv_extension
Definition: vkd3d_shader.h:690
vkd3d_shader_interface_info::combined_sampler_count
unsigned int combined_sampler_count
Size, in elements, of combined_samplers.
Definition: vkd3d_shader.h:442
vkd3d_shader_signature_element::register_index
unsigned int register_index
Register index.
Definition: vkd3d_shader.h:1396
VKD3D_SHADER_SOURCE_HLSL
@ VKD3D_SHADER_SOURCE_HLSL
High-Level Shader Language source code.
Definition: vkd3d_shader.h:570
vkd3d_shader_swizzle_component
vkd3d_shader_swizzle_component
Possible values for a single component of a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:1426
vkd3d_shader_push_constant_buffer
Describes the mapping of a Direct3D constant buffer to a range of push constants in the target enviro...
Definition: vkd3d_shader.h:388
vkd3d_shader_signature_element::mask
unsigned int mask
Mask of the register components allocated to this varying.
Definition: vkd3d_shader.h:1398
vkd3d_shader_parameter_specialization_constant
Definition: vkd3d_shader.h:275
vkd3d_shader_scan_descriptor_info
A chained structure enumerating the descriptors declared by a shader.
Definition: vkd3d_shader.h:1283
vkd3d_shader_descriptor_binding::set
unsigned int set
The set of the descriptor.
Definition: vkd3d_shader.h:223
vkd3d_shader_convert_root_signature
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...
vkd3d_shader_resource_binding::register_index
unsigned int register_index
Register index of the DXBC resource.
Definition: vkd3d_shader.h:317
VKD3D_SHADER_SV_CULL_DISTANCE
@ VKD3D_SHADER_SV_CULL_DISTANCE
Cull distance; SV_CullDistance in Direct3D.
Definition: vkd3d_shader.h:1330
VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_COUNTER
@ 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:1238
vkd3d_shader_root_parameter1
Definition: vkd3d_shader.h:1124
vkd3d_shader_combined_resource_sampler::resource_index
unsigned int resource_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:343
vkd3d_shader_descriptor_offset_info::descriptor_table_count
unsigned int descriptor_table_count
Size, in elements, of the descriptor table push constant array.
Definition: vkd3d_shader.h:503
vkd3d_shader_descriptor_info::count
unsigned int count
Size of this descriptor array, or 1 if a single descriptor.
Definition: vkd3d_shader.h:1275
vkd3d_shader_combined_resource_sampler::shader_visibility
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:352
vkd3d_shader_compile_info
A chained structure containing compilation parameters.
Definition: vkd3d_shader.h:639
vkd3d_shader_push_constant_buffer::register_space
unsigned int register_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:394
vkd3d_shader_structure_type
vkd3d_shader_structure_type
The type of a chained structure.
Definition: vkd3d_shader.h:51
vkd3d_shader_descriptor_offset
Definition: vkd3d_shader.h:472
VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ
@ VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ
The descriptor is a UAV resource, which is read from by the shader.
Definition: vkd3d_shader.h:1240
VKD3D_SHADER_SPIRV_EXTENSION_EXT_STENCIL_EXPORT
@ VKD3D_SHADER_SPIRV_EXTENSION_EXT_STENCIL_EXPORT
Definition: vkd3d_shader.h:697
vkd3d_shader_sysval_semantic
vkd3d_shader_sysval_semantic
System value semantic, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:1321
vkd3d_shader_compile_info::source
struct vkd3d_shader_code source
Input source code or byte code.
Definition: vkd3d_shader.h:651
PFN_vkd3d_shader_convert_root_signature
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:1839
vkd3d_shader_signature_element
A single shader varying, returned as part of struct vkd3d_shader_signature.
Definition: vkd3d_shader.h:1377
vkd3d_shader_compile_info::log_level
enum vkd3d_shader_log_level log_level
Minimum severity of messages returned from the shader function.
Definition: vkd3d_shader.h:673
VKD3D_SHADER_COMPONENT_FLOAT
@ VKD3D_SHADER_COMPONENT_FLOAT
32-bit IEEE floating-point.
Definition: vkd3d_shader.h:1311
vkd3d_shader_macro
A single preprocessor macro, passed as part of struct vkd3d_shader_preprocess_info.
Definition: vkd3d_shader.h:757
VKD3D_SHADER_SV_IS_FRONT_FACE
@ VKD3D_SHADER_SV_IS_FRONT_FACE
Whether the triangle is front-facing; SV_IsFrontFace in Direct3D.
Definition: vkd3d_shader.h:1342
VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO
The structure is a vkd3d_shader_spirv_target_info structure.
Definition: vkd3d_shader.h:62
vkd3d_shader_interface_info::binding_count
unsigned int binding_count
Size, in elements, of bindings.
Definition: vkd3d_shader.h:432
vkd3d_shader_free_root_signature
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_RESOURCE_DATA_DOUBLE
@ VKD3D_SHADER_RESOURCE_DATA_DOUBLE
IEEE double-precision floating-point.
Definition: vkd3d_shader.h:1217
vkd3d_shader_push_constant_buffer::register_index
unsigned int register_index
Register index of the Direct3D resource.
Definition: vkd3d_shader.h:396
VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_PREPROCESS_INFO
The structure is a vkd3d_shader_preprocess_info structure.
Definition: vkd3d_shader.h:75
vkd3d_shader_visibility
vkd3d_shader_visibility
Describes which shader stages a resource is visible to.
Definition: vkd3d_shader.h:150
vkd3d_shader_scan_descriptor_info::next
const void * next
Input; optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:1290
VKD3D_SHADER_RESOURCE_TEXTURE_2DARRAY
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DARRAY
2-dimensional array texture.
Definition: vkd3d_shader.h:1189
vkd3d_shader_descriptor_binding::count
unsigned int count
The size of this descriptor array.
Definition: vkd3d_shader.h:231
vkd3d_shader_free_messages
VKD3D_SHADER_API void vkd3d_shader_free_messages(char *messages)
Free shader messages allocated by another vkd3d-shader function, such as vkd3d_shader_compile().
vkd3d_shader_static_sampler_desc
Definition: vkd3d_shader.h:988
vkd3d_shader_resource_binding::type
enum vkd3d_shader_descriptor_type type
The type of this descriptor.
Definition: vkd3d_shader.h:310
vkd3d_shader_scan_descriptor_info::type
enum vkd3d_shader_structure_type type
Input; must be set to VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO.
Definition: vkd3d_shader.h:1288
vkd3d_shader_signature::element_count
unsigned int element_count
Size, in elements, of elements.
Definition: vkd3d_shader.h:1422
VKD3D_SHADER_RESOURCE_TEXTURE_CUBE
@ VKD3D_SHADER_RESOURCE_TEXTURE_CUBE
Cubemap texture.
Definition: vkd3d_shader.h:1185
vkd3d_shader_parameter
Definition: vkd3d_shader.h:280
vkd3d_shader_signature_element::component_type
enum vkd3d_shader_component_type component_type
Data type.
Definition: vkd3d_shader.h:1394
vkd3d_shader_get_version
const VKD3D_SHADER_API char * vkd3d_shader_get_version(unsigned int *major, unsigned int *minor)
Returns the current version of this library.
VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX
@ VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX
Viewport index; SV_ViewportArrayIndex in Direct3D.
Definition: vkd3d_shader.h:1334
vkd3d_shader_signature_element::used_mask
unsigned int used_mask
Subset of mask which the shader reads from or writes to.
Definition: vkd3d_shader.h:1405
vkd3d_shader_macro::value
const char * value
Optional pointer to a null-terminated string containing the expansion of the macro.
Definition: vkd3d_shader.h:770
vkd3d_shader_interface_info
A chained structure describing the interface between a compiled shader and the target environment.
Definition: vkd3d_shader.h:422
VKD3D_SHADER_COMPONENT_VOID
@ VKD3D_SHADER_COMPONENT_VOID
The varying has no type.
Definition: vkd3d_shader.h:1305
VKD3D_SHADER_RESOURCE_TEXTURE_3D
@ VKD3D_SHADER_RESOURCE_TEXTURE_3D
3-dimensional texture.
Definition: vkd3d_shader.h:1183
vkd3d_shader_compile_info::options
const struct vkd3d_shader_compile_option * options
Pointer to an array of compilation options.
Definition: vkd3d_shader.h:668
vkd3d_shader_combined_resource_sampler::sampler_index
unsigned int sampler_index
Register index of the Direct3D sampler.
Definition: vkd3d_shader.h:350
vkd3d_shader_descriptor_binding
A common structure describing the bind point of a descriptor or descriptor array in the target enviro...
Definition: vkd3d_shader.h:217
VKD3D_SHADER_SV_POSITION
@ VKD3D_SHADER_SV_POSITION
Vertex position; SV_Position in Direct3D.
Definition: vkd3d_shader.h:1326
vkd3d_shader_get_supported_target_types
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_RESOURCE_DATA_INT
@ VKD3D_SHADER_RESOURCE_DATA_INT
Signed integer.
Definition: vkd3d_shader.h:1209
vkd3d_shader_resource_binding::flags
unsigned int flags
A combination of zero or more elements of vkd3d_shader_binding_flag.
Definition: vkd3d_shader.h:321
vkd3d_shader_resource_type
vkd3d_shader_resource_type
The type of a shader resource, returned as part of struct vkd3d_shader_descriptor_info.
Definition: vkd3d_shader.h:1167
vkd3d_shader_descriptor_offset_info::descriptor_table_offset
unsigned int descriptor_table_offset
Byte offset within the push constants of an array of 32-bit descriptor array offsets.
Definition: vkd3d_shader.h:501
VKD3D_SHADER_RESOURCE_BUFFER
@ VKD3D_SHADER_RESOURCE_BUFFER
Dimensionless buffer.
Definition: vkd3d_shader.h:1175
VKD3D_SHADER_COMPONENT_BOOL
@ VKD3D_SHADER_COMPONENT_BOOL
Boolean.
Definition: vkd3d_shader.h:1313
VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_BUFFER
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_BUFFER
Use storage buffers for buffer UAVs.
Definition: vkd3d_shader.h:96
vkd3d_shader_resource_binding::binding
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:324
vkd3d_shader_interface_info::bindings
const struct vkd3d_shader_resource_binding * bindings
Pointer to an array of bindings for shader resource descriptors.
Definition: vkd3d_shader.h:430
VKD3D_SHADER_LOG_ERROR
@ VKD3D_SHADER_LOG_ERROR
Only fatal errors which prevent successful compilation will be returned.
Definition: vkd3d_shader.h:625
VKD3D_SHADER_COMPONENT_DOUBLE
@ VKD3D_SHADER_COMPONENT_DOUBLE
64-bit IEEE floating-point.
Definition: vkd3d_shader.h:1315
PFN_vkd3d_shader_serialize_root_signature
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:1834
VKD3D_SHADER_COMPONENT_INT
@ VKD3D_SHADER_COMPONENT_INT
32-bit signed integer.
Definition: vkd3d_shader.h:1309
PFN_vkd3d_shader_free_shader_signature
void(* PFN_vkd3d_shader_free_shader_signature)(struct vkd3d_shader_signature *signature)
Type of vkd3d_shader_free_shader_signature().
Definition: vkd3d_shader.h:1856
VKD3D_SHADER_RESOURCE_DATA_UNORM
@ VKD3D_SHADER_RESOURCE_DATA_UNORM
Unsigned normalized integer.
Definition: vkd3d_shader.h:1205
vkd3d_shader_root_signature_desc1
Definition: vkd3d_shader.h:1136
VKD3D_SHADER_SWIZZLE_MASK
#define VKD3D_SHADER_SWIZZLE_MASK
A mask selecting one component from a vkd3d-shader swizzle.
Definition: vkd3d_shader.h:1440
vkd3d_shader_descriptor_offset_info::binding_offsets
const struct vkd3d_shader_descriptor_offset * binding_offsets
Pointer to an array of struct vkd3d_shader_descriptor_offset objects.
Definition: vkd3d_shader.h:546
vkd3d_shader_interface_info::uav_counters
const struct vkd3d_shader_uav_counter_binding * uav_counters
Pointer to an array of bindings for UAV counters.
Definition: vkd3d_shader.h:445
vkd3d_shader_uav_counter_binding::register_index
unsigned int register_index
Register index of the Direct3D UAV descriptor.
Definition: vkd3d_shader.h:373
vkd3d_shader_descriptor_info
Describes a single shader descriptor; returned as part of struct vkd3d_shader_scan_descriptor_info.
Definition: vkd3d_shader.h:1251
VKD3D_SHADER_MINIMUM_PRECISION_FLOAT_16
@ VKD3D_SHADER_MINIMUM_PRECISION_FLOAT_16
16-bit floating-point.
Definition: vkd3d_shader.h:1363
VKD3D_SHADER_SV_INSTANCE_ID
@ VKD3D_SHADER_SV_INSTANCE_ID
Instance ID; SV_InstanceID in Direct3D.
Definition: vkd3d_shader.h:1340
VKD3D_SHADER_LOG_INFO
@ VKD3D_SHADER_LOG_INFO
All messages, including general informational messages, will be returned.
Definition: vkd3d_shader.h:631
vkd3d_shader_preprocess_info::next
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:834
vkd3d_shader_root_parameter
Definition: vkd3d_shader.h:1044
vkd3d_shader_parameter_immediate_constant
Definition: vkd3d_shader.h:267
VKD3D_SHADER_SOURCE_NONE
@ VKD3D_SHADER_SOURCE_NONE
The shader has no type or is to be ignored.
Definition: vkd3d_shader.h:563
VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO
The structure is a vkd3d_shader_compile_info structure.
Definition: vkd3d_shader.h:54
vkd3d_shader_api_version
vkd3d_shader_api_version
Definition: vkd3d_shader.h:42
vkd3d_shader_preprocess_info::macros
const struct vkd3d_shader_macro * macros
Pointer to an array of predefined macros.
Definition: vkd3d_shader.h:844
vkd3d_shader_combined_resource_sampler::binding
struct vkd3d_shader_descriptor_binding binding
The binding in the target environment.
Definition: vkd3d_shader.h:357
vkd3d_shader_root_descriptor_table
Definition: vkd3d_shader.h:1014
PFN_vkd3d_shader_scan
int(* PFN_vkd3d_shader_scan)(const struct vkd3d_shader_compile_info *compile_info, char **messages)
Type of vkd3d_shader_scan().
Definition: vkd3d_shader.h:1843
vkd3d_types.h
vkd3d_shader_compile_option::name
enum vkd3d_shader_compile_option_name name
Name of the option.
Definition: vkd3d_shader.h:141
vkd3d_shader_descriptor_info::resource_type
enum vkd3d_shader_resource_type resource_type
Resource type, if applicable, including its dimension.
Definition: vkd3d_shader.h:1263
vkd3d_shader_interface_info::next
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:427
PFN_vkd3d_shader_free_scan_descriptor_info
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:1845
VKD3D_SHADER_VISIBILITY_COMPUTE
@ VKD3D_SHADER_VISIBILITY_COMPUTE
The resource is visible only to the compute shader.
Definition: vkd3d_shader.h:166
vkd3d_shader_signature_element::semantic_name
const char * semantic_name
Semantic name.
Definition: vkd3d_shader.h:1380
vkd3d_shader_minimum_precision
vkd3d_shader_minimum_precision
Minimum interpolation precision of a shader varying, returned as part of struct vkd3d_shader_signatur...
Definition: vkd3d_shader.h:1359
VKD3D_SHADER_MINIMUM_PRECISION_INT_16
@ VKD3D_SHADER_MINIMUM_PRECISION_INT_16
16-bit signed integer.
Definition: vkd3d_shader.h:1367
vkd3d_shader_signature_element::sysval_semantic
enum vkd3d_shader_sysval_semantic sysval_semantic
System value semantic.
Definition: vkd3d_shader.h:1392
vkd3d_shader_compile_info::option_count
unsigned int option_count
Size, in elements, of options.
Definition: vkd3d_shader.h:670
PFN_vkd3d_shader_free_shader_code
void(* PFN_vkd3d_shader_free_shader_code)(struct vkd3d_shader_code *code)
Type of vkd3d_shader_free_shader_code().
Definition: vkd3d_shader.h:1825
VKD3D_SHADER_DESCRIPTOR_TYPE_UAV
@ VKD3D_SHADER_DESCRIPTOR_TYPE_UAV
The descriptor is an unordered access view.
Definition: vkd3d_shader.h:198
vkd3d_shader_interface_info::uav_counter_count
unsigned int uav_counter_count
Size, in elements, of uav_counters.
Definition: vkd3d_shader.h:447
VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_TEXEL_BUFFER
@ VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_TEXEL_BUFFER
Use buffer textures for buffer UAVs.
Definition: vkd3d_shader.h:94
vkd3d_shader_free_scan_descriptor_info
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().
vkd3d_shader_resource_binding::shader_visibility
enum vkd3d_shader_visibility shader_visibility
Shader stage(s) to which the resource is visible.
Definition: vkd3d_shader.h:319
vkd3d_shader_root_signature_desc
Definition: vkd3d_shader.h:1070
VKD3D_SHADER_RESOURCE_TEXTURE_2D
@ VKD3D_SHADER_RESOURCE_TEXTURE_2D
2-dimensional texture.
Definition: vkd3d_shader.h:1179
vkd3d_shader_combined_resource_sampler::resource_space
unsigned int resource_space
Register space of the Direct3D resource.
Definition: vkd3d_shader.h:341
vkd3d_shader_parse_input_signature
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 shader, returning a structural description which can be easily...
vkd3d_shader_preprocess_info
A chained structure containing preprocessing parameters.
Definition: vkd3d_shader.h:829
vkd3d_shader_preprocess_info::pfn_open_include
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:860
VKD3D_SHADER_RESOURCE_DATA_MIXED
@ VKD3D_SHADER_RESOURCE_DATA_MIXED
Undefined/type-less.
Definition: vkd3d_shader.h:1215
vkd3d_shader_serialize_root_signature
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_MINIMUM_PRECISION_UINT_16
@ VKD3D_SHADER_MINIMUM_PRECISION_UINT_16
16-bit unsigned integer.
Definition: vkd3d_shader.h:1369
VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
The descriptor is a sampler.
Definition: vkd3d_shader.h:208
VKD3D_SHADER_RESOURCE_TEXTURE_2DMS
@ VKD3D_SHADER_RESOURCE_TEXTURE_2DMS
Multisampled 2-dimensional texture.
Definition: vkd3d_shader.h:1181
VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO
@ VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO
The structure is a vkd3d_shader_transform_feedback_info structure.
Definition: vkd3d_shader.h:64
vkd3d_shader_transform_feedback_element
Definition: vkd3d_shader.h:450
VKD3D_SHADER_MINIMUM_PRECISION_FIXED_8_2
@ VKD3D_SHADER_MINIMUM_PRECISION_FIXED_8_2
10-bit fixed point (2 integer and 8 fractional bits).
Definition: vkd3d_shader.h:1365
vkd3d_shader_descriptor_info::flags
unsigned int flags
Bitwise combination of zero or more members of vkd3d_shader_descriptor_info_flag.
Definition: vkd3d_shader.h:1270
vkd3d_shader_descriptor_offset_info::next
const void * next
Optional pointer to a structure containing further parameters.
Definition: vkd3d_shader.h:494
PFN_vkd3d_shader_compile
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:1820
vkd3d_shader_preprocess_info::macro_count
unsigned int macro_count
Size, in elements, of macros.
Definition: vkd3d_shader.h:846
vkd3d_shader_uav_counter_binding
Describes the mapping of a single Direct3D UAV counter.
Definition: vkd3d_shader.h:365