ReactOS 0.4.17-dev-934-g091855f
vkd3d_shader_private.h
Go to the documentation of this file.
1/*
2 * Copyright 2017 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 * This file incorporates work covered by the following copyright and
19 * permission notice:
20 *
21 * Copyright 2002-2003 The wine-d3d team
22 * Copyright 2002-2003 2004 Jason Edmeades
23 * Copyright 2002-2003 Raphael Junqueira
24 * Copyright 2005 Oliver Stieber
25 * Copyright 2006 Stefan Dösinger
26 * Copyright 2006-2011, 2013 Stefan Dösinger for CodeWeavers
27 * Copyright 2007 Henri Verbeet
28 * Copyright 2008-2009 Henri Verbeet for CodeWeavers
29 *
30 * This library is free software; you can redistribute it and/or
31 * modify it under the terms of the GNU Lesser General Public
32 * License as published by the Free Software Foundation; either
33 * version 2.1 of the License, or (at your option) any later version.
34 *
35 * This library is distributed in the hope that it will be useful,
36 * but WITHOUT ANY WARRANTY; without even the implied warranty of
37 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
38 * Lesser General Public License for more details.
39 *
40 * You should have received a copy of the GNU Lesser General Public
41 * License along with this library; if not, write to the Free Software
42 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
43 */
44
45#ifndef __VKD3D_SHADER_PRIVATE_H
46#define __VKD3D_SHADER_PRIVATE_H
47
48#define NONAMELESSUNION
49#include "vkd3d_common.h"
50#include "vkd3d_memory.h"
51#include "vkd3d_shader.h"
52#include "wine/list.h"
53
54#include <inttypes.h>
55#include <limits.h>
56#include <stdbool.h>
57#include <string.h>
58
59#define VKD3D_VEC4_SIZE 4
60#define VKD3D_DVEC2_SIZE 2
61
62#define VKD3D_SHADER_COMPONENT_TYPE_COUNT (VKD3D_SHADER_COMPONENT_UINT64 + 1)
63#define VKD3D_SHADER_MINIMUM_PRECISION_COUNT (VKD3D_SHADER_MINIMUM_PRECISION_UINT_16 + 1)
64
66{
75
87
92
103
107
113
117
125
166
174
178
191
193
214
226
250
252
255
259};
260
262{
586
588
590};
591
593{
654
656
658};
659
661{
665};
666
668{
674
676
678};
679
681{
697
699};
700
702{
705}
706
708{
709 return data_type == VKD3D_DATA_BOOL;
710}
711
713{
715}
716
718{
720}
721
723{
727
729};
730
732{
748};
749
750#define VKD3DSP_WRITEMASK_0 0x1u /* .x r */
751#define VKD3DSP_WRITEMASK_1 0x2u /* .y g */
752#define VKD3DSP_WRITEMASK_2 0x4u /* .z b */
753#define VKD3DSP_WRITEMASK_3 0x8u /* .w a */
754#define VKD3DSP_WRITEMASK_ALL 0xfu /* all */
755
757{
763};
764
766{
775
777};
778
780{
788 VKD3DSGF_ENABLE_SHADER_EXTENSIONS = 0x80, /* never emitted? */
814};
815
817{
822};
823
825{
829};
830
832{
835};
836
838{
840
844
846};
847
848#define VKD3DSI_NONE 0x0
849#define VKD3DSI_TEXLD_PROJECT 0x1
850#define VKD3DSI_TEXLD_BIAS 0x2
851#define VKD3DSI_INDEXED_DYNAMIC 0x4
852#define VKD3DSI_RESINFO_RCP_FLOAT 0x1
853#define VKD3DSI_RESINFO_UINT 0x2
854#define VKD3DSI_SAMPLE_INFO_UINT 0x1
855#define VKD3DSI_SAMPLER_COMPARISON_MODE 0x1
856#define VKD3DSI_SHIFT_UNMASKED 0x1
857#define VKD3DSI_WAVE_PREFIX 0x1
858
859#define VKD3DSI_PRECISE_X 0x100
860#define VKD3DSI_PRECISE_Y 0x200
861#define VKD3DSI_PRECISE_Z 0x400
862#define VKD3DSI_PRECISE_W 0x800
863#define VKD3DSI_PRECISE_XYZW (VKD3DSI_PRECISE_X | VKD3DSI_PRECISE_Y \
864 | VKD3DSI_PRECISE_Z | VKD3DSI_PRECISE_W)
865#define VKD3DSI_PRECISE_SHIFT 8
866
868{
875};
876
878{
882
883#define MAX_REG_OUTPUT 32
884
886{
893
895
900};
901
903
905{
909};
910
912{
913 unsigned int register_idx;
915 /* total count is element_count * component_count */
916 unsigned int element_count;
917 unsigned int component_count;
920};
921
923{
924 unsigned int register_idx;
925 unsigned int register_size;
926 unsigned int alignment;
928 unsigned int component_count;
931};
932
934{
936 unsigned int offset;
937 /* address is known to fall within the object (for optimisation) */
939};
940
942{
948 unsigned int idx_count;
950 /* known address alignment for optimisation, or zero */
951 unsigned int alignment;
952 union
953 {
958 unsigned fp_body_idx;
959 } u;
960};
961
963 enum vkd3d_data_type data_type, unsigned int idx_count);
964
966{
967 switch (reg->type)
968 {
969 case VKD3DSPR_SAMPLER:
972 case VKD3DSPR_UAV:
973 return true;
974
975 default:
976 return false;
977 }
978}
979
981{
985 unsigned int shift;
986};
987
989{
993};
994
996 enum vkd3d_data_type data_type, unsigned int idx_count);
998 enum vkd3d_data_type data_type, unsigned int idx_count);
999void vsir_src_param_init_label(struct vkd3d_shader_src_param *param, unsigned int label_id);
1000
1002{
1004 unsigned int register_count;
1005};
1006
1008{
1009 unsigned int space;
1010 unsigned int first, last;
1011};
1012
1014{
1017};
1018
1020{
1036
1038{
1040 unsigned int usage_idx;
1042 unsigned int sample_count;
1045};
1046
1048{
1072};
1073
1074#define SM1_COLOR_REGISTER_OFFSET 8
1075#define SM1_RASTOUT_REGISTER_OFFSET 10
1076
1077#define SIGNATURE_TARGET_LOCATION_UNUSED (~0u)
1078
1080{
1081 /* sort_index is not a property of the signature element, it is just a
1082 * convenience field used to retain the original order in a signature and
1083 * recover it after having permuted the signature itself. */
1084 unsigned int sort_index;
1085 const char *semantic_name;
1086 unsigned int semantic_index;
1087 unsigned int stream_index;
1090 /* Register index in the source shader. */
1091 unsigned int register_index;
1092 unsigned int register_count;
1093 unsigned int mask;
1094 unsigned int used_mask;
1097 /* Register index / location in the target shader.
1098 * If SIGNATURE_TARGET_LOCATION_UNUSED, this element should not be written. */
1099 unsigned int target_location;
1100};
1101
1103{
1106 unsigned int element_count;
1107};
1108
1110{
1113}
1114
1116{
1118}
1119
1121 unsigned int reg_idx, unsigned int write_mask);
1123 enum vkd3d_shader_sysval_semantic sysval, unsigned int semantic_index, unsigned int *element_index);
1125
1127{
1134};
1135
1137{
1140};
1141
1143{
1146};
1147
1149{
1151 unsigned int size;
1153};
1154
1156{
1158 unsigned int byte_stride;
1159};
1160
1162{
1164};
1165
1167{
1168 unsigned int size;
1169 unsigned int stride;
1170};
1171
1173{
1175 unsigned int alignment;
1176 unsigned int byte_count;
1178};
1179
1181{
1183 unsigned int alignment;
1184 unsigned int byte_stride;
1185 unsigned int structure_count;
1187};
1188
1190{
1191 unsigned int x, y, z;
1192};
1193
1195{
1196 unsigned int index;
1197 unsigned int array_size;
1198 unsigned int body_count;
1199 unsigned int table_count;
1200};
1201
1203{
1204 signed char u, v, w;
1205};
1206
1208{
1221
1223};
1224
1226{
1229};
1230
1232{
1233 const char *source_name;
1234 unsigned int line, column;
1235};
1236
1238{
1242 unsigned int dst_count;
1243 unsigned int src_count;
1248 unsigned int resource_stride;
1252 union
1253 {
1261 unsigned int count;
1262 unsigned int index;
1277};
1278
1279static inline bool vkd3d_shader_ver_ge(const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
1280{
1281 return v->major > major || (v->major == major && v->minor >= minor);
1282}
1283
1284static inline bool vkd3d_shader_ver_le(const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
1285{
1286 return v->major < major || (v->major == major && v->minor <= minor);
1287}
1288
1290 const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode);
1291
1293{
1294 return ins->texel_offset.u || ins->texel_offset.v || ins->texel_offset.w;
1295}
1296
1297static inline bool register_is_constant(const struct vkd3d_shader_register *reg)
1298{
1299 return (reg->type == VKD3DSPR_IMMCONST || reg->type == VKD3DSPR_IMMCONST64);
1300}
1301
1302static inline bool register_is_undef(const struct vkd3d_shader_register *reg)
1303{
1304 return reg->type == VKD3DSPR_UNDEF;
1305}
1306
1308{
1310}
1311
1313{
1314 return register_is_constant(reg) && reg->dimension == VSIR_DIMENSION_SCALAR
1315 && (data_type_is_64_bit(reg->data_type) ? !reg->u.immconst_u64[0] : !reg->u.immconst_u32[0]);
1316}
1317
1318static inline bool register_is_numeric_array(const struct vkd3d_shader_register *reg)
1319{
1320 return (reg->type == VKD3DSPR_IMMCONSTBUFFER || reg->type == VKD3DSPR_IDXTEMP
1321 || reg->type == VKD3DSPR_GROUPSHAREDMEM);
1322}
1323
1324static inline bool vsir_register_is_label(const struct vkd3d_shader_register *reg)
1325{
1326 return reg->type == VKD3DSPR_LABEL;
1327}
1328
1329static inline bool register_is_ssa(const struct vkd3d_shader_register *reg)
1330{
1331 return reg->type == VKD3DSPR_SSA;
1332}
1333
1335{
1338};
1339
1341{
1344 unsigned int count;
1345 unsigned int stride;
1346 unsigned int index;
1347};
1348
1350
1352 struct vkd3d_shader_param_allocator *allocator, unsigned int count)
1353{
1354 VKD3D_ASSERT(allocator->stride == sizeof(struct vkd3d_shader_src_param));
1356}
1357
1359 struct vkd3d_shader_param_allocator *allocator, unsigned int count)
1360{
1361 VKD3D_ASSERT(allocator->stride == sizeof(struct vkd3d_shader_dst_param));
1363}
1364
1366{
1368 size_t capacity;
1369 size_t count;
1370
1376
1378};
1379
1380bool shader_instruction_array_init(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve);
1381bool shader_instruction_array_reserve(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve);
1383 unsigned int idx, unsigned int count);
1387 unsigned int dst, unsigned int src);
1389
1391{
1393};
1394
1396{
1399};
1400
1402{
1406};
1407
1409{
1412
1416
1417 unsigned int parameter_count;
1420
1423 unsigned int flat_constant_count[3];
1424 unsigned int block_count;
1425 unsigned int temp_count;
1426 unsigned int ssa_count;
1434
1435 const char **block_names;
1437};
1438
1440int vsir_program_compile(struct vsir_program *program, uint64_t config_flags,
1441 const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out,
1442 struct vkd3d_shader_message_context *message_context);
1445bool vsir_program_init(struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info,
1446 const struct vkd3d_shader_version *version, unsigned int reserve, enum vsir_control_flow_type cf_type,
1447 enum vsir_normalisation_level normalisation_level);
1449 const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context);
1451 const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context);
1453 const char *source_name, struct vkd3d_shader_message_context *message_context);
1455 struct vsir_program *program);
1457 struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location,
1458 enum vkd3d_shader_opcode opcode, unsigned int dst_count, unsigned int src_count);
1459
1461 struct vsir_program *program, unsigned int count)
1462{
1463 return shader_dst_param_allocator_get(&program->instructions.dst_params, count);
1464}
1465
1467 struct vsir_program *program, unsigned int count)
1468{
1469 return shader_src_param_allocator_get(&program->instructions.src_params, count);
1470}
1471
1473{
1478};
1479
1481 enum vkd3d_shader_error error, const char *format, ...) VKD3D_PRINTF_FUNC(3, 4);
1483 struct vkd3d_shader_message_context *message_context, const char *source_name);
1486
1488{
1490 unsigned int register_space;
1491 unsigned int register_index;
1492 unsigned int register_id;
1495 unsigned int flags;
1496 unsigned int sample_count;
1497 unsigned int buffer_size;
1498 unsigned int structure_stride;
1499 unsigned int count;
1501};
1502
1504{
1506 unsigned int descriptor_count;
1507};
1508
1509void vsir_program_trace(const struct vsir_program *program);
1510
1512
1514{
1515 char *buffer;
1517};
1518
1520{
1523};
1524
1526{
1530};
1531
1533 const struct vkd3d_shader_compile_info *compile_info,
1546#define vkd3d_string_buffer_trace(buffer) \
1547 vkd3d_string_buffer_trace_(buffer, __FUNCTION__)
1548void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const char *function);
1551
1553{
1557};
1558
1559/* Align to the next 4-byte offset, and return that offset. */
1561size_t bytecode_put_bytes(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size);
1562size_t bytecode_put_bytes_unaligned(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size);
1565void set_string(struct vkd3d_bytecode_buffer *buffer, size_t offset, const char *string, size_t length);
1566
1567static inline size_t put_u32(struct vkd3d_bytecode_buffer *buffer, uint32_t value)
1568{
1569 return bytecode_put_bytes(buffer, &value, sizeof(value));
1570}
1571
1572static inline size_t put_f32(struct vkd3d_bytecode_buffer *buffer, float value)
1573{
1574 return bytecode_put_bytes(buffer, &value, sizeof(value));
1575}
1576
1577static inline size_t put_string(struct vkd3d_bytecode_buffer *buffer, const char *string)
1578{
1579 return bytecode_put_bytes(buffer, string, strlen(string) + 1);
1580}
1581
1583{
1584 return buffer->size;
1585}
1586
1587uint32_t vkd3d_parse_integer(const char *s);
1588
1590{
1593};
1594
1598 enum vkd3d_shader_log_level log_level);
1600 const char *function);
1601#define vkd3d_shader_message_context_trace_messages(context) \
1602 vkd3d_shader_message_context_trace_messages_(context, __FUNCTION__)
1604 enum vkd3d_shader_error error, const char *format, ...) VKD3D_PRINTF_FUNC(4, 5);
1613
1615void vkd3d_shader_trace_text_(const char *text, size_t size, const char *function);
1616#define vkd3d_shader_trace_text(text, size) \
1617 vkd3d_shader_trace_text_(text, size, __FUNCTION__)
1618
1619bool sm1_register_from_semantic_name(const struct vkd3d_shader_version *version, const char *semantic_name,
1620 unsigned int semantic_index, bool output, enum vkd3d_shader_register_type *type, unsigned int *reg);
1621bool sm1_usage_from_semantic_name(const char *semantic_name,
1622 uint32_t semantic_index, enum vkd3d_decl_usage *usage, uint32_t *usage_idx);
1624 const char *semantic_name, bool output, enum vkd3d_shader_register_type *type, bool *has_idx);
1627 const struct vkd3d_shader_version *version, bool semantic_compat_mapping, enum vkd3d_tessellator_domain domain,
1628 const char *semantic_name, unsigned int semantic_idx, bool output, bool is_patch_constant_func);
1629
1630int d3dbc_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags,
1631 struct vkd3d_shader_message_context *message_context, struct vsir_program *program);
1632int dxil_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags,
1633 struct vkd3d_shader_message_context *message_context, struct vsir_program *program);
1634int tpf_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags,
1635 struct vkd3d_shader_message_context *message_context, struct vsir_program *program);
1636int fx_parse(const struct vkd3d_shader_compile_info *compile_info,
1637 struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context);
1638
1640
1641int shader_extract_from_dxbc(const struct vkd3d_shader_code *dxbc,
1642 struct vkd3d_shader_message_context *message_context, const char *source_name, struct dxbc_shader_desc *desc);
1643int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
1644 struct vkd3d_shader_message_context *message_context, struct shader_signature *signature);
1645
1646int glsl_compile(struct vsir_program *program, uint64_t config_flags,
1647 const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info,
1648 const struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info,
1649 const struct vkd3d_shader_compile_info *compile_info,
1650 struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context);
1651
1652#define SPIRV_MAX_SRC_COUNT 6
1653
1654int spirv_compile(struct vsir_program *program, uint64_t config_flags,
1655 const struct vkd3d_shader_scan_descriptor_info1 *scan_descriptor_info,
1656 const struct vkd3d_shader_compile_info *compile_info,
1657 struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context);
1658
1659int msl_compile(struct vsir_program *program, uint64_t config_flags,
1660 const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info,
1661 const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out,
1662 struct vkd3d_shader_message_context *message_context);
1663
1665{
1668};
1669
1670void vkd3d_compute_md5(const void *dxbc, size_t size, uint32_t checksum[4], enum vkd3d_md5_variant variant);
1671
1672int preproc_lexer_parse(const struct vkd3d_shader_compile_info *compile_info,
1673 struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context);
1674
1675int hlsl_compile_shader(const struct vkd3d_shader_code *hlsl, const struct vkd3d_shader_compile_info *compile_info,
1676 struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context);
1677
1680{
1681 switch (data_type)
1682 {
1683 case VKD3D_DATA_HALF: /* Minimum precision. TODO: native 16-bit */
1684 case VKD3D_DATA_FLOAT:
1685 case VKD3D_DATA_UNORM:
1686 case VKD3D_DATA_SNORM:
1688 case VKD3D_DATA_UINT16: /* Minimum precision. TODO: native 16-bit */
1689 case VKD3D_DATA_UINT:
1691 case VKD3D_DATA_INT:
1693 case VKD3D_DATA_DOUBLE:
1695 case VKD3D_DATA_UINT64:
1697 case VKD3D_DATA_BOOL:
1699 default:
1700 FIXME("Unhandled data type %#x.\n", data_type);
1701 /* fall-through */
1702 case VKD3D_DATA_MIXED:
1704 }
1705}
1706
1709{
1710 switch (component_type)
1711 {
1713 return VKD3D_DATA_FLOAT;
1715 return VKD3D_DATA_UINT;
1717 return VKD3D_DATA_INT;
1719 return VKD3D_DATA_DOUBLE;
1720 default:
1721 FIXME("Unhandled component type %#x.\n", component_type);
1722 return VKD3D_DATA_FLOAT;
1723 }
1724}
1725
1728{
1729 switch (data_type)
1730 {
1742 default:
1743 FIXME("Unhandled data type %#x.\n", data_type);
1744 /* fall-through */
1747 }
1748}
1749
1751{
1753}
1754
1756 unsigned int index);
1757
1759{
1761}
1762
1763static inline unsigned int vsir_write_mask_get_component_idx(uint32_t write_mask)
1764{
1765 unsigned int i;
1766
1767 VKD3D_ASSERT(write_mask);
1768 for (i = 0; i < VKD3D_VEC4_SIZE; ++i)
1769 {
1770 if (write_mask & (VKD3DSP_WRITEMASK_0 << i))
1771 return i;
1772 }
1773
1774 FIXME("Invalid write mask %#x.\n", write_mask);
1775 return 0;
1776}
1777
1778static inline unsigned int vsir_write_mask_component_count(uint32_t write_mask)
1779{
1780 unsigned int count = vkd3d_popcount(write_mask & VKD3DSP_WRITEMASK_ALL);
1782 return count;
1783}
1784
1785static inline unsigned int vkd3d_write_mask_from_component_count(unsigned int component_count)
1786{
1788 return (VKD3DSP_WRITEMASK_0 << component_count) - 1;
1789}
1790
1792{
1793 switch (write_mask32)
1794 {
1796 return VKD3DSP_WRITEMASK_0;
1797
1799 return VKD3DSP_WRITEMASK_1;
1800
1803
1804 default:
1805 ERR("Invalid 32 bit writemask when converting to 64 bit: %#x.\n", write_mask32);
1806 return VKD3DSP_WRITEMASK_0;
1807 }
1808}
1809
1811{
1812 switch (write_mask64)
1813 {
1816
1819
1822
1823 default:
1824 ERR("Invalid 64 bit writemask: %#x.\n", write_mask64);
1825 return VKD3DSP_WRITEMASK_0;
1826 }
1827}
1828
1830{
1831 switch (swizzle32)
1832 {
1833 case VKD3D_SHADER_SWIZZLE(X, Y, X, Y):
1834 return VKD3D_SHADER_SWIZZLE(X, X, X, X);
1835
1836 case VKD3D_SHADER_SWIZZLE(X, Y, Z, W):
1837 return VKD3D_SHADER_SWIZZLE(X, Y, X, X);
1838
1839 case VKD3D_SHADER_SWIZZLE(Z, W, X, Y):
1840 return VKD3D_SHADER_SWIZZLE(Y, X, X, X);
1841
1842 case VKD3D_SHADER_SWIZZLE(Z, W, Z, W):
1843 return VKD3D_SHADER_SWIZZLE(Y, Y, X, X);
1844
1845 default:
1846 ERR("Invalid 32 bit swizzle when converting to 64 bit: %#x.\n", swizzle32);
1847 return VKD3D_SHADER_SWIZZLE(X, X, X, X);
1848 }
1849}
1850
1852{
1853 switch (swizzle64)
1854 {
1855 case VKD3D_SHADER_SWIZZLE(X, X, X, X):
1856 return VKD3D_SHADER_SWIZZLE(X, Y, X, Y);
1857
1858 case VKD3D_SHADER_SWIZZLE(X, Y, X, X):
1859 return VKD3D_SHADER_SWIZZLE(X, Y, Z, W);
1860
1861 case VKD3D_SHADER_SWIZZLE(Y, X, X, X):
1862 return VKD3D_SHADER_SWIZZLE(Z, W, X, Y);
1863
1864 case VKD3D_SHADER_SWIZZLE(Y, Y, X, X):
1865 return VKD3D_SHADER_SWIZZLE(Z, W, Z, W);
1866
1867 default:
1868 ERR("Invalid 64 bit swizzle: %#x.\n", swizzle64);
1869 return VKD3D_SHADER_SWIZZLE(X, Y, X, Y);
1870 }
1871}
1872
1873static inline unsigned int vsir_swizzle_get_component(uint32_t swizzle, unsigned int idx)
1874{
1876}
1877
1878static inline unsigned int vkd3d_compact_swizzle(uint32_t swizzle, uint32_t write_mask)
1879{
1880 unsigned int i, compacted_swizzle = 0;
1881
1882 for (i = 0; i < VKD3D_VEC4_SIZE; ++i)
1883 {
1884 if (write_mask & (VKD3DSP_WRITEMASK_0 << i))
1885 {
1886 compacted_swizzle <<= VKD3D_SHADER_SWIZZLE_SHIFT(1);
1887 compacted_swizzle |= vsir_swizzle_get_component(swizzle, i);
1888 }
1889 }
1890
1891 return compacted_swizzle;
1892}
1893
1894static inline uint32_t vsir_swizzle_from_writemask(unsigned int writemask)
1895{
1896 static const unsigned int swizzles[16] =
1897 {
1898 0,
1914 };
1915
1916 return swizzles[writemask & 0xf];
1917}
1918
1920{
1922 const void *next;
1923};
1924
1925#define vkd3d_find_struct(c, t) vkd3d_find_struct_(c, VKD3D_SHADER_STRUCTURE_TYPE_##t)
1926static inline void *vkd3d_find_struct_(const struct vkd3d_struct *chain,
1928{
1929 while (chain)
1930 {
1931 if (chain->type == type)
1932 return (void *)chain;
1933
1934 chain = chain->next;
1935 }
1936
1937 return NULL;
1938}
1939
1940#define VKD3D_DXBC_HEADER_SIZE (8 * sizeof(uint32_t))
1941#define VKD3D_DXBC_CHUNK_ALIGNMENT sizeof(uint32_t)
1942
1943#define DXBC_MAX_SECTION_COUNT 7
1944
1946{
1947 unsigned int section_count;
1949};
1950
1951void dxbc_writer_add_section(struct dxbc_writer *dxbc, uint32_t tag, const void *data, size_t size);
1952void dxbc_writer_init(struct dxbc_writer *dxbc);
1953int dxbc_writer_write(struct dxbc_writer *dxbc, struct vkd3d_shader_code *code);
1954
1955#endif /* __VKD3D_SHADER_PRIVATE_H */
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
#define FIXME(fmt,...)
Definition: precomp.h:53
#define ERR(fmt,...)
Definition: precomp.h:57
Definition: list.h:39
BYTE usage_idx
unsigned int component_count
component_type
range
Definition: d3dx9_private.h:58
#define NULL
Definition: types.h:112
UINT32 uint32_t
Definition: types.h:75
UINT64 uint64_t
Definition: types.h:77
static BOOL reserve(struct dynamic_array *array, int count, int itemsize)
Definition: mesh.c:5499
unsigned int idx
Definition: utils.c:40
#define Z(I)
#define Y(I)
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
Definition: fdi.c:353
static const WCHAR version[]
Definition: asmname.c:66
const WCHAR * text
Definition: package.c:1826
unsigned char uint8_t
Definition: stdint.h:33
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
char * va_list
Definition: vadefs.h:50
GLint level
Definition: gl.h:1546
const GLdouble * v
Definition: gl.h:2040
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble s
Definition: gl.h:2039
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLenum src
Definition: glext.h:6340
GLuint GLenum swizzle
Definition: glext.h:9511
GLuint buffer
Definition: glext.h:5915
GLsizeiptr size
Definition: glext.h:5919
GLintptr offset
Definition: glext.h:5920
GLuint sampler
Definition: glext.h:7283
GLuint index
Definition: glext.h:6031
GLuint program
Definition: glext.h:6723
GLfloat f
Definition: glext.h:7540
GLenum GLenum dst
Definition: glext.h:6340
GLbitfield flags
Definition: glext.h:7161
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLfloat param
Definition: glext.h:5796
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
enum wined3d_data_type data_type
Definition: glsl_shader.c:71
static int reg
Definition: i386-dis.c:1290
#define d
Definition: ke_i.h:81
#define error(str)
Definition: mkdosfs.c:1605
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
#define minor(rdev)
Definition: propsheet.cpp:929
#define major(rdev)
Definition: propsheet.cpp:928
enum vkd3d_shader_register_type reg_type
Definition: spirv.c:4885
enum vkd3d_shader_sysval_semantic sysval
Definition: spirv.c:4839
Definition: polytest.cpp:36
Definition: match.c:390
Definition: inflate.c:139
Definition: http.c:7252
Definition: cookie.c:42
const uint32_t * byte_code
struct shader_signature input_signature
struct shader_signature patch_constant_signature
struct shader_signature output_signature
struct vkd3d_shader_dxbc_section_desc sections[DXBC_MAX_SECTION_COUNT]
unsigned int section_count
Definition: name.c:39
Definition: import.c:81
struct signature_element * elements
enum vkd3d_shader_minimum_precision min_precision
enum vkd3d_shader_component_type component_type
enum vkd3d_shader_sysval_semantic sysval_semantic
enum vkd3d_shader_interpolation_mode interpolation_mode
Definition: ecma_167.h:138
enum vkd3d_shader_resource_data_type resource_data_type
enum vkd3d_shader_resource_type resource_type
enum vkd3d_shader_descriptor_type type
struct vkd3d_shader_register reg
const struct vkd3d_shader_immediate_constant_buffer * initialiser
struct vkd3d_shader_immediate_constant_buffer ** icbs
struct vkd3d_shader_param_allocator dst_params
struct vkd3d_shader_src_param * outpointid_param
struct vkd3d_shader_param_allocator src_params
struct vkd3d_shader_instruction * elements
struct vkd3d_shader_src_param * src
enum vsir_global_flags global_flags
struct vkd3d_shader_constant_buffer cb
const struct vkd3d_shader_src_param * predicate
struct vsir_thread_group_size thread_group_size
const struct vkd3d_shader_immediate_constant_buffer * icb
enum vkd3d_shader_tessellator_partitioning tessellator_partitioning
struct vkd3d_shader_texel_offset texel_offset
struct vkd3d_shader_tgsm_raw tgsm_raw
struct vkd3d_shader_raw_resource raw_resource
struct vkd3d_shader_register_semantic register_semantic
enum vkd3d_shader_tessellator_output_primitive tessellator_output_primitive
enum vkd3d_tessellator_domain tessellator_domain
struct vkd3d_shader_indexable_temp indexable_temp
enum vkd3d_shader_resource_type resource_type
union vkd3d_shader_instruction::@6020 declaration
struct vkd3d_shader_function_table_pointer fp
struct vkd3d_shader_tgsm_structured tgsm_structured
enum vkd3d_shader_opcode opcode
enum vkd3d_data_type resource_data_type[VKD3D_VEC4_SIZE]
struct vkd3d_shader_semantic semantic
struct vkd3d_shader_structured_resource structured_resource
struct vkd3d_shader_dst_param * dst
struct vkd3d_shader_index_range index_range
struct vkd3d_shader_primitive_type primitive_type
enum vkd3d_shader_log_level log_level
struct vkd3d_shader_param_node * current
struct vkd3d_shader_param_node * head
struct vkd3d_shader_param_node * next
struct vsir_program * program
struct vkd3d_shader_message_context * message_context
enum vkd3d_primitive_type type
struct vkd3d_shader_src_param * rel_addr
struct vkd3d_shader_dst_param reg
enum vkd3d_shader_input_sysval_semantic sysval_semantic
uint32_t immconst_u32[VKD3D_VEC4_SIZE]
enum vkd3d_data_type data_type
enum vkd3d_shader_register_type type
double immconst_f64[VKD3D_DVEC2_SIZE]
float immconst_f32[VKD3D_VEC4_SIZE]
uint64_t immconst_u64[VKD3D_DVEC2_SIZE]
struct vkd3d_shader_register_index idx[3]
enum vkd3d_shader_register_precision precision
union vkd3d_shader_register::@6019 u
enum vsir_dimension dimension
struct vkd3d_shader_dst_param reg
struct vkd3d_shader_descriptor_info1 * descriptors
enum vkd3d_shader_resource_type resource_type
enum vkd3d_data_type resource_data_type[VKD3D_VEC4_SIZE]
enum vkd3d_decl_usage usage
struct vkd3d_shader_register reg
enum vkd3d_shader_src_modifier modifiers
struct vkd3d_shader_dst_param reg
struct vkd3d_shader_dst_param reg
enum vkd3d_shader_type type
struct vkd3d_string_buffer ** buffers
enum vkd3d_shader_structure_type type
struct vkd3d_shader_version shader_version
struct shader_signature patch_constant_signature
struct shader_signature input_signature
unsigned int output_control_point_count
enum vsir_control_flow_type cf_type
unsigned int temp_count
struct shader_signature output_signature
unsigned int parameter_count
const char ** block_names
const struct vkd3d_shader_parameter1 * parameters
struct vkd3d_shader_instruction_array instructions
unsigned int flat_constant_count[3]
unsigned int ssa_count
struct vsir_thread_group_size thread_group_size
unsigned int input_control_point_count
enum vsir_global_flags global_flags
enum vsir_normalisation_level normalisation_level
unsigned int block_count
struct sock * chain
Definition: tcpcore.h:1
Definition: pdh_main.c:64
static unsigned int vkd3d_popcount(unsigned int v)
Definition: vkd3d_common.h:280
#define VKD3D_PRINTF_FUNC(fmt, args)
Definition: vkd3d_common.h:114
#define VKD3D_ASSERT(cond)
Definition: vkd3d_common.h:49
vkd3d_shader_resource_data_type
@ VKD3D_SHADER_RESOURCE_DATA_DOUBLE
@ VKD3D_SHADER_RESOURCE_DATA_MIXED
@ VKD3D_SHADER_RESOURCE_DATA_SNORM
@ VKD3D_SHADER_RESOURCE_DATA_CONTINUED
@ VKD3D_SHADER_RESOURCE_DATA_UINT
@ VKD3D_SHADER_RESOURCE_DATA_FLOAT
@ VKD3D_SHADER_RESOURCE_DATA_UNORM
@ VKD3D_SHADER_RESOURCE_DATA_INT
vkd3d_shader_sysval_semantic
@ VKD3D_SHADER_SV_CULL_DISTANCE
@ VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE
@ VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN
@ VKD3D_SHADER_SV_CLIP_DISTANCE
vkd3d_shader_log_level
vkd3d_shader_structure_type
Definition: vkd3d_shader.h:66
vkd3d_shader_tessellator_output_primitive
vkd3d_shader_component_type
@ VKD3D_SHADER_COMPONENT_INT
@ VKD3D_SHADER_COMPONENT_UINT
@ VKD3D_SHADER_COMPONENT_DOUBLE
@ VKD3D_SHADER_COMPONENT_UINT64
@ VKD3D_SHADER_COMPONENT_FLOAT
@ VKD3D_SHADER_COMPONENT_BOOL
vkd3d_shader_descriptor_type
Definition: vkd3d_shader.h:420
#define VKD3D_SHADER_SWIZZLE_MASK
vkd3d_shader_resource_type
vkd3d_shader_tessellator_partitioning
#define VKD3D_SHADER_SWIZZLE_SHIFT(idx)
vkd3d_shader_minimum_precision
#define VKD3D_SHADER_SWIZZLE(x, y, z, w)
vkd3d_shader_parameter_name
Definition: vkd3d_shader.h:526
void vsir_program_trace(const struct vsir_program *program)
Definition: d3d_asm.c:2550
bool shader_instruction_array_init(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)
void vkd3d_shader_message_context_cleanup(struct vkd3d_shader_message_context *context)
struct signature_element * vsir_signature_find_element_for_reg(const struct shader_signature *signature, unsigned int reg_idx, unsigned int write_mask)
Definition: ir.c:1573
static enum vkd3d_shader_component_type vkd3d_component_type_from_resource_data_type(enum vkd3d_shader_resource_data_type data_type)
vkd3d_shader_src_modifier
@ VKD3DSPSM_DZ
@ VKD3DSPSM_DW
@ VKD3DSPSM_SIGNNEG
@ VKD3DSPSM_ABS
@ VKD3DSPSM_SIGN
@ VKD3DSPSM_NONE
@ VKD3DSPSM_COMP
@ VKD3DSPSM_NOT
@ VKD3DSPSM_COUNT
@ VKD3DSPSM_BIASNEG
@ VKD3DSPSM_X2
@ VKD3DSPSM_BIAS
@ VKD3DSPSM_X2NEG
@ VKD3DSPSM_NEG
@ VKD3DSPSM_ABSNEG
int shader_extract_from_dxbc(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, const char *source_name, struct dxbc_shader_desc *desc)
Definition: dxbc.c:580
bool shader_sm4_is_scalar_register(const struct vkd3d_shader_register *reg)
Definition: tpf.c:2238
static uint32_t vsir_swizzle_64_from_32(uint32_t swizzle32)
static bool vkd3d_shader_instruction_has_texel_offset(const struct vkd3d_shader_instruction *ins)
void vkd3d_string_buffer_init(struct vkd3d_string_buffer *buffer)
vsir_global_flags
@ VKD3DSGF_ENABLE_WAVE_INTRINSICS
@ VKD3DSGF_ENABLE_RESOURCE_DESCRIPTOR_HEAP_INDEXING
@ VKD3DSGF_ENABLE_UAVS_AT_EVERY_STAGE
@ VKD3DSGF_ENABLE_RASTERIZER_ORDERED_VIEWS
@ VKD3DSGF_ENABLE_VIEWID
@ VKD3DSGF_ENABLE_STENCIL_REF
@ VKD3DSGF_FORCE_NATIVE_LOW_PRECISION
@ VKD3DSGF_ENABLE_INT64
@ VKD3DSGF_ENABLE_SAMPLER_FEEDBACK
@ VKD3DSGF_ENABLE_ATOMIC_INT64_ON_GROUP_SHARED
@ VKD3DSGF_ENABLE_SHADINGRATE
@ VKD3DSGF_ENABLE_ATOMIC_INT64_ON_TYPED_RESOURCE
@ VKD3DSGF_REFACTORING_ALLOWED
@ VKD3DSGF_ENABLE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS
@ VKD3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS
@ VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL
@ VKD3DSGF_ENABLE_LVL_9_COMPARISON_FILTERING
@ VKD3DSGF_SKIP_OPTIMIZATION
@ VKD3DSGF_ENABLE_RAYTRACING_TIER_1_1
@ VKD3DSGF_ENABLE_VP_AND_RT_ARRAY_INDEX
@ VKD3DSGF_ENABLE_MINIMUM_PRECISION
@ VKD3DSGF_ENABLE_INNER_COVERAGE
@ VKD3DSGF_ENABLE_DOUBLE_PRECISION_FLOAT_OPS
@ VKD3DSGF_ENABLE_RELAXED_TYPED_UAV_FORMATS
@ VKD3DSGF_ENABLE_TILED_RESOURCE_INTRINSICS
@ VKD3DSGF_BIND_FOR_DURATION
@ VKD3DSGF_ENABLE_BARYCENTRICS
@ VKD3DSGF_ENABLE_UP_TO_64_UAVS
@ VKD3DSGF_ENABLE_11_1_DOUBLE_EXTENSIONS
@ VKD3DSGF_ENABLE_SAMPLER_DESCRIPTOR_HEAP_INDEXING
@ VKD3DSGF_ENABLE_SHADER_EXTENSIONS
@ VKD3DSGF_ENABLE_CS4_RAW_STRUCTURED_BUFFERS
@ VKD3DSGF_ENABLE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE
static bool data_type_is_64_bit(enum vkd3d_data_type data_type)
bool vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context, char **out)
static bool vkd3d_shader_ver_ge(const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
int dxil_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags, struct vkd3d_shader_message_context *message_context, struct vsir_program *program)
Definition: dxil.c:10606
static bool vsir_register_is_descriptor(const struct vkd3d_shader_register *reg)
vkd3d_shader_type
@ VKD3D_SHADER_TYPE_VERTEX
@ VKD3D_SHADER_TYPE_HULL
@ VKD3D_SHADER_TYPE_LIBRARY
@ VKD3D_SHADER_TYPE_GEOMETRY
@ VKD3D_SHADER_TYPE_COMPUTE
@ VKD3D_SHADER_TYPE_GRAPHICS_COUNT
@ VKD3D_SHADER_TYPE_COUNT
@ VKD3D_SHADER_TYPE_TEXTURE
@ VKD3D_SHADER_TYPE_PIXEL
@ VKD3D_SHADER_TYPE_EFFECT
@ VKD3D_SHADER_TYPE_DOMAIN
const struct vkd3d_shader_parameter1 * vsir_program_get_parameter(const struct vsir_program *program, enum vkd3d_shader_parameter_name name)
Definition: ir.c:120
vkd3d_shader_interpolation_mode
@ VKD3DSIM_CONSTANT
@ VKD3DSIM_NONE
@ VKD3DSIM_LINEAR_NOPERSPECTIVE_CENTROID
@ VKD3DSIM_LINEAR_NOPERSPECTIVE_SAMPLE
@ VKD3DSIM_LINEAR_CENTROID
@ VKD3DSIM_LINEAR
@ VKD3DSIM_LINEAR_NOPERSPECTIVE
@ VKD3DSIM_LINEAR_SAMPLE
@ VKD3DSIM_COUNT
static uint32_t vsir_swizzle_from_writemask(unsigned int writemask)
static struct vkd3d_shader_dst_param * vsir_program_get_dst_params(struct vsir_program *program, unsigned int count)
int vkd3d_string_buffer_vprintf(struct vkd3d_string_buffer *buffer, const char *format, va_list args)
#define VKD3DSP_WRITEMASK_3
bool shader_instruction_array_add_icb(struct vkd3d_shader_instruction_array *instructions, struct vkd3d_shader_immediate_constant_buffer *icb)
static unsigned int vsir_write_mask_component_count(uint32_t write_mask)
vkd3d_shader_register_type
@ VKD3DSPR_PRIMID
@ VKD3DSPR_DEPTHOUTGE
@ VKD3DSPR_RASTERIZER
@ VKD3DSPR_PARAMETER
@ VKD3DSPR_POINT_COORD
@ VKD3DSPR_INCONTROLPOINT
@ VKD3DSPR_LABEL
@ VKD3DSPR_IMMCONST
@ VKD3DSPR_CONSTBOOL
@ VKD3DSPR_GROUPSHAREDMEM
@ VKD3DSPR_SAMPLEMASK
@ VKD3DSPR_GSINSTID
@ VKD3DSPR_UNDEF
@ VKD3DSPR_FUNCTIONPOINTER
@ VKD3DSPR_NULL
@ VKD3DSPR_CONSTBUFFER
@ VKD3DSPR_CONST4
@ VKD3DSPR_FUNCTIONBODY
@ VKD3DSPR_SSA
@ VKD3DSPR_RASTOUT
@ VKD3DSPR_RESOURCE
@ VKD3DSPR_COUNT
@ VKD3DSPR_COLOROUT
@ VKD3DSPR_PREDICATE
@ VKD3DSPR_LOOP
@ VKD3DSPR_MISCTYPE
@ VKD3DSPR_DEPTHOUT
@ VKD3DSPR_DEPTHOUTLE
@ VKD3DSPR_TEMPFLOAT16
@ VKD3DSPR_WAVELANECOUNT
@ VKD3DSPR_CONSTINT
@ VKD3DSPR_CONST
@ VKD3DSPR_JOININSTID
@ VKD3DSPR_TESSCOORD
@ VKD3DSPR_COVERAGE
@ VKD3DSPR_IMMCONST64
@ VKD3DSPR_UAV
@ VKD3DSPR_TEMP
@ VKD3DSPR_THREADGROUPID
@ VKD3DSPR_COMBINED_SAMPLER
@ VKD3DSPR_CONST2
@ VKD3DSPR_IDXTEMP
@ VKD3DSPR_LOCALTHREADINDEX
@ VKD3DSPR_CONST3
@ VKD3DSPR_THREADID
@ VKD3DSPR_ADDR
@ VKD3DSPR_OUTPUT
@ VKD3DSPR_LOCALTHREADID
@ VKD3DSPR_SAMPLER
@ VKD3DSPR_FORKINSTID
@ VKD3DSPR_OUTCONTROLPOINT
@ VKD3DSPR_OUTPOINTID
@ VKD3DSPR_IMMCONSTBUFFER
@ VKD3DSPR_OUTSTENCILREF
@ VKD3DSPR_TEXCRDOUT
@ VKD3DSPR_TEXTURE
@ VKD3DSPR_WAVELANEINDEX
@ VKD3DSPR_STREAM
@ VKD3DSPR_ATTROUT
@ VKD3DSPR_INVALID
@ VKD3DSPR_PATCHCONST
@ VKD3DSPR_INPUT
vkd3d_shader_uav_flags
@ VKD3DSUF_GLOBALLY_COHERENT
@ VKD3DSUF_RASTERISER_ORDERED_VIEW
@ VKD3DSUF_ORDER_PRESERVING_COUNTER
void vkd3d_shader_warning(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(4
void vkd3d_shader_code_from_string_buffer(struct vkd3d_shader_code *code, struct vkd3d_string_buffer *buffer)
vkd3d_shader_atomic_rmw_flags
@ VKD3DARF_SEQ_CST
@ VKD3DARF_VOLATILE
void set_string(struct vkd3d_bytecode_buffer *buffer, size_t offset, const char *string, size_t length)
bool shader_instruction_array_insert_at(struct vkd3d_shader_instruction_array *instructions, unsigned int idx, unsigned int count)
static bool data_type_is_floating_point(enum vkd3d_data_type data_type)
static bool register_is_undef(const struct vkd3d_shader_register *reg)
static bool component_type_is_64_bit(enum vkd3d_shader_component_type component_type)
void vkd3d_string_buffer_cache_cleanup(struct vkd3d_string_buffer_cache *list)
int vkd3d_string_buffer_print_f64(struct vkd3d_string_buffer *buffer, double d)
vkd3d_shader_error
@ VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC
@ VKD3D_SHADER_ERROR_HLSL_INVALID_TEXEL_OFFSET
@ VKD3D_SHADER_ERROR_DXIL_INVALID_VALUE_SYMTAB
@ VKD3D_SHADER_WARNING_PP_UNTERMINATED_IF
@ VKD3D_SHADER_ERROR_SPV_INVALID_REGISTER_TYPE
@ VKD3D_SHADER_ERROR_D3DBC_UNDECLARED_SEMANTIC
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_OPCODE
@ VKD3D_SHADER_WARNING_SPV_INVALID_SWIZZLE
@ VKD3D_SHADER_ERROR_TPF_INVALID_INDEX_RANGE_DCL
@ VKD3D_SHADER_ERROR_HLSL_MODIFIES_CONST
@ VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND
@ VKD3D_SHADER_WARNING_DXIL_IGNORING_ATTACHMENT
@ VKD3D_SHADER_ERROR_HLSL_INVALID_PARTITIONING
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_WRITEMASK
@ VKD3D_SHADER_ERROR_DXIL_INVALID_ENTRY_POINT
@ VKD3D_SHADER_ERROR_DXIL_INVALID_BITCODE
@ VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND
@ VKD3D_SHADER_WARNING_HLSL_IMPLICIT_TRUNCATION
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_COUNT
@ VKD3D_SHADER_WARNING_HLSL_UNKNOWN_ATTRIBUTE
@ VKD3D_SHADER_WARNING_DXIL_INVALID_OPERATION
@ VKD3D_SHADER_WARNING_DXIL_TYPE_MISMATCH
@ VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_IDX_UNSUPPORTED
@ VKD3D_SHADER_WARNING_DXIL_INVALID_MASK
@ VKD3D_SHADER_ERROR_HLSL_DIVISION_BY_ZERO
@ VKD3D_SHADER_ERROR_HLSL_MISSING_ATTRIBUTE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_OFFSET
@ VKD3D_SHADER_ERROR_GLSL_UNSUPPORTED
@ VKD3D_SHADER_ERROR_SPV_INVALID_SHADER
@ VKD3D_SHADER_WARNING_DXIL_UNDEFINED_OPERAND
@ VKD3D_SHADER_ERROR_HLSL_INVALID_TYPE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER
@ VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_SIZE
@ VKD3D_SHADER_ERROR_HLSL_INCONSISTENT_SAMPLER
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SSA_USAGE
@ VKD3D_SHADER_ERROR_HLSL_NON_STATIC_OBJECT_REF
@ VKD3D_SHADER_ERROR_D3DBC_UNEXPECTED_EOF
@ VKD3D_SHADER_ERROR_DXBC_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_HLSL_NON_FINITE_RESULT
@ VKD3D_SHADER_ERROR_SPV_NOT_IMPLEMENTED
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DEST_COUNT
@ VKD3D_SHADER_ERROR_VSIR_INVALID_REGISTER_TYPE
@ VKD3D_SHADER_ERROR_SPV_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_HLSL_FAILED_FORCED_UNROLL
@ VKD3D_SHADER_ERROR_HLSL_INVALID_OUTPUT_PRIMITIVE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_GS
@ VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_BINDING_NOT_FOUND
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_SWIZZLE
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DIMENSION
@ VKD3D_SHADER_ERROR_DXBC_INVALID_SIZE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_PRECISION
@ VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCE_HANDLE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN
@ VKD3D_SHADER_ERROR_TPF_TOO_MANY_REGISTERS
@ VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_INDEX_COUNT
@ VKD3D_SHADER_ERROR_HLSL_MISSING_SEMANTIC
@ VKD3D_SHADER_WARNING_PP_UNKNOWN_DIRECTIVE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_OFFSET
@ VKD3D_SHADER_ERROR_VSIR_INVALID_WRITE_MASK
@ VKD3D_SHADER_ERROR_DXIL_UNHANDLED_INTRINSIC
@ VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX_COUNT
@ VKD3D_SHADER_ERROR_HLSL_INVALID_RESERVATION
@ VKD3D_SHADER_ERROR_FX_INVALID_VERSION
@ VKD3D_SHADER_ERROR_HLSL_WRONG_PARAMETER_COUNT
@ VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES
@ VKD3D_SHADER_ERROR_HLSL_INVALID_THREAD_COUNT
@ VKD3D_SHADER_WARNING_PP_INVALID_DIRECTIVE
@ VKD3D_SHADER_ERROR_SPV_UNSUPPORTED_FEATURE
@ VKD3D_SHADER_ERROR_DXBC_INVALID_MAGIC
@ VKD3D_SHADER_ERROR_DXBC_INVALID_SIGNATURE
@ VKD3D_SHADER_ERROR_HLSL_MISSING_INITIALIZER
@ VKD3D_SHADER_ERROR_PP_ERROR_DIRECTIVE
@ VKD3D_SHADER_ERROR_HLSL_MISPLACED_SAMPLER_STATE
@ VKD3D_SHADER_ERROR_GLSL_INTERNAL
@ VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE
@ VKD3D_SHADER_WARNING_HLSL_IMAGINARY_NUMERIC_RESULT
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DCL
@ VKD3D_SHADER_WARNING_DXIL_ENTRY_POINT_MISMATCH
@ VKD3D_SHADER_ERROR_DXIL_INVALID_FUNCTION_DCL
@ VKD3D_SHADER_ERROR_HLSL_NOT_IMPLEMENTED
@ VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY
@ VKD3D_SHADER_ERROR_VSIR_MISSING_SEMANTIC
@ VKD3D_SHADER_WARNING_DXIL_UNKNOWN_SHADER_TYPE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCES
@ VKD3D_SHADER_WARNING_PP_UNTERMINATED_MACRO
@ VKD3D_SHADER_ERROR_HLSL_INVALID_STATE_BLOCK_ENTRY
@ VKD3D_SHADER_ERROR_VSIR_INVALID_PARAMETER
@ VKD3D_SHADER_ERROR_HLSL_RECURSIVE_CALL
@ VKD3D_SHADER_ERROR_HLSL_INVALID_LVALUE
@ VKD3D_SHADER_ERROR_MSL_BINDING_NOT_FOUND
@ VKD3D_SHADER_ERROR_SPV_INVALID_HANDLER
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_TYPE
@ VKD3D_SHADER_WARNING_PP_ARGUMENT_COUNT_MISMATCH
@ VKD3D_SHADER_WARNING_D3DBC_IGNORED_INSTRUCTION_FLAGS
@ VKD3D_SHADER_ERROR_DXIL_INVALID_MODULE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX
@ VKD3D_SHADER_ERROR_HLSL_INVALID_INDEX
@ VKD3D_SHADER_ERROR_MSL_INTERNAL
@ VKD3D_SHADER_ERROR_SPV_INVALID_TYPE
@ VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_SWIZZLE
@ VKD3D_SHADER_WARNING_DXIL_INVALID_MODULE_LENGTH
@ VKD3D_SHADER_WARNING_PP_DIV_BY_ZERO
@ VKD3D_SHADER_WARNING_HLSL_DIVISION_BY_ZERO
@ VKD3D_SHADER_WARNING_DXIL_INVALID_BLOCK_LENGTH
@ VKD3D_SHADER_ERROR_DXIL_INVALID_PROPERTIES
@ VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS
@ VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND_COUNT
@ VKD3D_SHADER_ERROR_HLSL_NOT_DEFINED
@ VKD3D_SHADER_WARNING_SPV_IGNORING_FLAG
@ VKD3D_SHADER_ERROR_HLSL_INVALID_PROFILE
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_INDEX
@ VKD3D_SHADER_WARNING_HLSL_NON_FINITE_RESULT
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DCL_TEMPS
@ VKD3D_SHADER_ERROR_RS_INVALID_ROOT_PARAMETER_TYPE
@ VKD3D_SHADER_ERROR_RS_INVALID_VERSION
@ VKD3D_SHADER_ERROR_VSIR_INVALID_HANDLER
@ VKD3D_SHADER_ERROR_HLSL_INVALID_SIZE
@ VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_MASK
@ VKD3D_SHADER_WARNING_PP_ALREADY_DEFINED
@ VKD3D_SHADER_ERROR_HLSL_INVALID_WRITEMASK
@ VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_TABLE
@ VKD3D_SHADER_ERROR_HLSL_INCOMPATIBLE_PROFILE
@ VKD3D_SHADER_ERROR_D3DBC_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SHIFT
@ VKD3D_SHADER_ERROR_HLSL_OVERLAPPING_RESERVATIONS
@ VKD3D_SHADER_ERROR_TPF_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_TPF_INVALID_CASE_VALUE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_DOMAIN
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_SIZE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_CONTROL_POINT_COUNT
@ VKD3D_SHADER_ERROR_FX_INVALID_DATA
@ VKD3D_SHADER_ERROR_HLSL_OFFSET_OUT_OF_BOUNDS
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SIGNATURE
@ VKD3D_SHADER_WARNING_DXIL_IGNORING_OPERANDS
@ VKD3D_SHADER_ERROR_VSIR_NOT_IMPLEMENTED
@ VKD3D_SHADER_ERROR_D3DBC_NOT_IMPLEMENTED
@ VKD3D_SHADER_WARNING_TPF_UNHANDLED_INDEX_RANGE_MASK
@ VKD3D_SHADER_ERROR_HLSL_INVALID_SYNTAX
@ VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_ID
@ VKD3D_SHADER_ERROR_VSIR_DUPLICATE_DCL_TEMPS
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SWIZZLE
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_PROFILE
@ VKD3D_SHADER_ERROR_HLSL_MISPLACED_COMPILE
@ VKD3D_SHADER_ERROR_PP_INVALID_SYNTAX
@ VKD3D_SHADER_WARNING_HLSL_IGNORED_DEFAULT_VALUE
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHECKSUM
@ VKD3D_SHADER_ERROR_HLSL_UNKNOWN_MODIFIER
@ VKD3D_SHADER_ERROR_HLSL_DUPLICATE_SWITCH_CASE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_CONTROL_FLOW
@ VKD3D_SHADER_ERROR_DXIL_INVALID_SIZE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_METADATA
@ VKD3D_SHADER_ERROR_DXIL_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_RESOURCE_TYPE
@ VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING
@ VKD3D_SHADER_ERROR_DXIL_UNSUPPORTED_BITCODE_FORMAT
@ VKD3D_SHADER_ERROR_HLSL_MISSING_TECHNIQUE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_TESSELLATION
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DIMENSION
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SOURCE_COUNT
@ VKD3D_SHADER_WARNING_SPV_INVALID_UAV_FLAGS
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_VERSION_TOKEN
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_RANGE
@ VKD3D_SHADER_ERROR_FX_NOT_IMPLEMENTED
@ VKD3D_SHADER_ERROR_TPF_INVALID_IO_REGISTER
@ VKD3D_SHADER_WARNING_HLSL_IGNORED_ATTRIBUTE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_SIGNATURE
@ VKD3D_SHADER_ERROR_HLSL_REDEFINED
@ VKD3D_SHADER_ERROR_PP_INCLUDE_FAILED
@ VKD3D_SHADER_WARNING_DXIL_UNKNOWN_MAGIC_NUMBER
@ VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF
@ VKD3D_SHADER_ERROR_DXBC_INVALID_VERSION
@ VKD3D_SHADER_WARNING_TPF_MASK_NOT_CONTIGUOUS
static unsigned int vkd3d_write_mask_from_component_count(unsigned int component_count)
#define VKD3DSP_WRITEMASK_ALL
@ VSIR_DIMENSION_SCALAR
@ VSIR_DIMENSION_VEC4
@ VSIR_DIMENSION_COUNT
@ VSIR_DIMENSION_NONE
@ VKD3D_DATA_UINT64
@ VKD3D_DATA_COUNT
@ VKD3D_DATA_SNORM
@ VKD3D_DATA_INT
@ VKD3D_DATA_BOOL
@ VKD3D_DATA_UNUSED
@ VKD3D_DATA_DOUBLE
@ VKD3D_DATA_HALF
@ VKD3D_DATA_UINT8
@ VKD3D_DATA_OPAQUE
@ VKD3D_DATA_UINT
@ VKD3D_DATA_UNORM
@ VKD3D_DATA_FLOAT
@ VKD3D_DATA_UINT16
@ VKD3D_DATA_MIXED
@ VKD3D_DATA_CONTINUED
vsir_normalisation_level
@ VSIR_NOT_NORMALISED
@ VSIR_FULLY_NORMALISED_IO
@ VSIR_NORMALISED_HULL_CONTROL_POINT_IO
static struct vkd3d_shader_src_param * vsir_program_get_src_params(struct vsir_program *program, unsigned int count)
bool vsir_program_init(struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, const struct vkd3d_shader_version *version, unsigned int reserve, enum vsir_control_flow_type cf_type, enum vsir_normalisation_level normalisation_level)
Definition: ir.c:76
static bool register_is_constant_or_undef(const struct vkd3d_shader_register *reg)
static bool data_type_is_integer(enum vkd3d_data_type data_type)
vkd3d_shader_input_sysval_semantic
@ VKD3D_SIV_TRIANGLE_U_TESS_FACTOR
@ VKD3D_SIV_CULL_DISTANCE
@ VKD3D_SIV_IS_FRONT_FACE
@ VKD3D_SIV_LINE_DETAIL_TESS_FACTOR
@ VKD3D_SIV_QUAD_V1_TESS_FACTOR
@ VKD3D_SIV_PRIMITIVE_ID
@ VKD3D_SIV_VERTEX_ID
@ VKD3D_SIV_QUAD_U1_TESS_FACTOR
@ VKD3D_SIV_INSTANCE_ID
@ VKD3D_SIV_QUAD_U0_TESS_FACTOR
@ VKD3D_SIV_QUAD_U_INNER_TESS_FACTOR
@ VKD3D_SIV_TRIANGLE_INNER_TESS_FACTOR
@ VKD3D_SIV_NONE
@ VKD3D_SIV_SAMPLE_INDEX
@ VKD3D_SIV_POSITION
@ VKD3D_SIV_QUAD_V_INNER_TESS_FACTOR
@ VKD3D_SIV_TRIANGLE_W_TESS_FACTOR
@ VKD3D_SIV_RENDER_TARGET_ARRAY_INDEX
@ VKD3D_SIV_LINE_DENSITY_TESS_FACTOR
@ VKD3D_SIV_CLIP_DISTANCE
@ VKD3D_SIV_TRIANGLE_V_TESS_FACTOR
@ VKD3D_SIV_QUAD_V0_TESS_FACTOR
@ VKD3D_SIV_VIEWPORT_ARRAY_INDEX
static unsigned int vsir_write_mask_get_component_idx(uint32_t write_mask)
int tpf_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags, struct vkd3d_shader_message_context *message_context, struct vsir_program *program)
Definition: tpf.c:2900
vsir_rastout_register
@ VSIR_RASTOUT_POINT_SIZE
@ VSIR_RASTOUT_FOG
@ VSIR_RASTOUT_POSITION
void vkd3d_compute_md5(const void *dxbc, size_t size, uint32_t checksum[4], enum vkd3d_md5_variant variant)
Definition: checksum.c:305
static enum vkd3d_shader_component_type vkd3d_component_type_from_data_type(enum vkd3d_data_type data_type)
static unsigned int vsir_swizzle_get_component(uint32_t swizzle, unsigned int idx)
vkd3d_shader_opcode
@ VKD3DSIH_LD_UAV_TYPED_S
@ VKD3DSIH_UTOU
@ VKD3DSIH_NOP
@ VKD3DSIH_RESINFO
@ VKD3DSIH_ENDSWITCH
@ VKD3DSIH_DP2
@ VKD3DSIH_TEXM3x3SPEC
@ VKD3DSIH_HS_JOIN_PHASE
@ VKD3DSIH_SETP
@ VKD3DSIH_TEXREG2RGB
@ VKD3DSIH_TEXDP3TEX
@ VKD3DSIH_WAVE_OP_IMAX
@ VKD3DSIH_SGE
@ VKD3DSIH_IMAD
@ VKD3DSIH_TEX
@ VKD3DSIH_F16TOF32
@ VKD3DSIH_M3x4
@ VKD3DSIH_UMUL
@ VKD3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER
@ VKD3DSIH_AND
@ VKD3DSIH_QUAD_READ_LANE_AT
@ VKD3DSIH_IMM_ATOMIC_UMAX
@ VKD3DSIH_TEXM3x3PAD
@ VKD3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT
@ VKD3DSIH_DMOV
@ VKD3DSIH_CRS
@ VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE
@ VKD3DSIH_GEU
@ VKD3DSIH_WAVE_READ_LANE_AT
@ VKD3DSIH_GATHER4_PO_C
@ VKD3DSIH_DCL_INPUT_CONTROL_POINT_COUNT
@ VKD3DSIH_WAVE_PREFIX_BIT_COUNT
@ VKD3DSIH_ISHL
@ VKD3DSIH_GATHER4_S
@ VKD3DSIH_SAMPLE_C_LZ
@ VKD3DSIH_IMUL
@ VKD3DSIH_LOOP
@ VKD3DSIH_SAMPLE_INFO
@ VKD3DSIH_TEXDP3
@ VKD3DSIH_HSIN
@ VKD3DSIH_ROUND_PI
@ VKD3DSIH_TEXREG2AR
@ VKD3DSIH_NRM
@ VKD3DSIH_WAVE_OP_MAX
@ VKD3DSIH_RETP
@ VKD3DSIH_DCL_INPUT_PS
@ VKD3DSIH_NEO
@ VKD3DSIH_TEXM3x3DIFF
@ VKD3DSIH_WAVE_OP_UMIN
@ VKD3DSIH_SWITCH
@ VKD3DSIH_ATOMIC_OR
@ VKD3DSIH_CND
@ VKD3DSIH_UGE
@ VKD3DSIH_DSX_COARSE
@ VKD3DSIH_DCL_INTERFACE
@ VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL
@ VKD3DSIH_IMM_ATOMIC_XOR
@ VKD3DSIH_IADD
@ VKD3DSIH_GATHER4_PO_C_S
@ VKD3DSIH_ISINF
@ VKD3DSIH_M4x3
@ VKD3DSIH_TEXM3x2PAD
@ VKD3DSIH_DCL_INPUT_PRIMITIVE
@ VKD3DSIH_DP4
@ VKD3DSIH_DRCP
@ VKD3DSIH_DIV
@ VKD3DSIH_STORE_UAV_TYPED
@ VKD3DSIH_EMIT_STREAM
@ VKD3DSIH_WAVE_IS_FIRST_LANE
@ VKD3DSIH_DTOI
@ VKD3DSIH_UNO
@ VKD3DSIH_DTOF
@ VKD3DSIH_IEQ
@ VKD3DSIH_DNE
@ VKD3DSIH_DCL_OUTPUT
@ VKD3DSIH_SAMPLE_B_CL_S
@ VKD3DSIH_WAVE_ACTIVE_BIT_OR
@ VKD3DSIH_LD_UAV_TYPED
@ VKD3DSIH_XOR
@ VKD3DSIH_DCL_GS_INSTANCES
@ VKD3DSIH_LIT
@ VKD3DSIH_SUB
@ VKD3DSIH_SAMPLE
@ VKD3DSIH_UMAX
@ VKD3DSIH_TEXKILL
@ VKD3DSIH_QUAD_READ_ACROSS_X
@ VKD3DSIH_WAVE_ANY_TRUE
@ VKD3DSIH_ENDREP
@ VKD3DSIH_LD_STRUCTURED
@ VKD3DSIH_SAMPLE_C_CL_S
@ VKD3DSIH_DCL_OUTPUT_SIV
@ VKD3DSIH_SAMPLE_C
@ VKD3DSIH_DSY_FINE
@ VKD3DSIH_ISHR
@ VKD3DSIH_DCL_FUNCTION_TABLE
@ VKD3DSIH_QUAD_READ_ACROSS_D
@ VKD3DSIH_NEU
@ VKD3DSIH_TEXCOORD
@ VKD3DSIH_ATOMIC_XOR
@ VKD3DSIH_DCL_RESOURCE_RAW
@ VKD3DSIH_FTOD
@ VKD3DSIH_DCL_VERTICES_OUT
@ VKD3DSIH_ISNAN
@ VKD3DSIH_DCL_SAMPLER
@ VKD3DSIH_DADD
@ VKD3DSIH_BEM
@ VKD3DSIH_DCL_INPUT_SGV
@ VKD3DSIH_LOGP
@ VKD3DSIH_GATHER4_PO
@ VKD3DSIH_ROUND_NE
@ VKD3DSIH_DCL_OUTPUT_TOPOLOGY
@ VKD3DSIH_EVAL_CENTROID
@ VKD3DSIH_IMM_ATOMIC_CONSUME
@ VKD3DSIH_ACOS
@ VKD3DSIH_TEXREG2GB
@ VKD3DSIH_MUL
@ VKD3DSIH_BREAK
@ VKD3DSIH_CALL
@ VKD3DSIH_COUNT
@ VKD3DSIH_DCL_UAV_RAW
@ VKD3DSIH_LD2DMS
@ VKD3DSIH_EXP
@ VKD3DSIH_TEXBEM
@ VKD3DSIH_DISCARD
@ VKD3DSIH_SWAPC
@ VKD3DSIH_IFC
@ VKD3DSIH_BFREV
@ VKD3DSIH_HS_DECLS
@ VKD3DSIH_DFMA
@ VKD3DSIH_LTU
@ VKD3DSIH_ATOMIC_UMIN
@ VKD3DSIH_SAMPLE_LOD
@ VKD3DSIH_ATOMIC_AND
@ VKD3DSIH_CASE
@ VKD3DSIH_MIN
@ VKD3DSIH_BREAKC
@ VKD3DSIH_RCP
@ VKD3DSIH_DEQO
@ VKD3DSIH_CONTINUE
@ VKD3DSIH_INVALID
@ VKD3DSIH_SAMPLE_POS
@ VKD3DSIH_DCL_GLOBAL_FLAGS
@ VKD3DSIH_IF
@ VKD3DSIH_TEXM3x2TEX
@ VKD3DSIH_M4x4
@ VKD3DSIH_COUNTBITS
@ VKD3DSIH_HTAN
@ VKD3DSIH_UDIV
@ VKD3DSIH_RSQ
@ VKD3DSIH_EVAL_SAMPLE_INDEX
@ VKD3DSIH_ENDIF
@ VKD3DSIH_REP
@ VKD3DSIH_CUT_STREAM
@ VKD3DSIH_UTOD
@ VKD3DSIH_CHECK_ACCESS_FULLY_MAPPED
@ VKD3DSIH_LOD
@ VKD3DSIH_DCL_FUNCTION_BODY
@ VKD3DSIH_DCL_HS_MAX_TESSFACTOR
@ VKD3DSIH_DCL_TEMPS
@ VKD3DSIH_IMAX
@ VKD3DSIH_SLT
@ VKD3DSIH_FTOI
@ VKD3DSIH_TAN
@ VKD3DSIH_DCL_UAV_STRUCTURED
@ VKD3DSIH_DCL_INPUT
@ VKD3DSIH_HS_CONTROL_POINT_PHASE
@ VKD3DSIH_LOG
@ VKD3DSIH_ROUND_NI
@ VKD3DSIH_DMAX
@ VKD3DSIH_EQO
@ VKD3DSIH_DCL_INPUT_PS_SIV
@ VKD3DSIH_IMM_ATOMIC_IADD
@ VKD3DSIH_IMM_ATOMIC_EXCH
@ VKD3DSIH_DCL_TGSM_RAW
@ VKD3DSIH_SYNC
@ VKD3DSIH_ATOMIC_IADD
@ VKD3DSIH_ATOMIC_CMP_STORE
@ VKD3DSIH_LD_RAW
@ VKD3DSIH_ATOMIC_UMAX
@ VKD3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT
@ VKD3DSIH_WAVE_OP_UMAX
@ VKD3DSIH_TEXLDD
@ VKD3DSIH_TEXM3x2DEPTH
@ VKD3DSIH_SGN
@ VKD3DSIH_DCL_THREAD_GROUP
@ VKD3DSIH_WAVE_ACTIVE_BIT_XOR
@ VKD3DSIH_TEXM3x3VSPEC
@ VKD3DSIH_IMM_ATOMIC_IMIN
@ VKD3DSIH_DCL_STREAM
@ VKD3DSIH_F32TOF16
@ VKD3DSIH_UTOF
@ VKD3DSIH_LTO
@ VKD3DSIH_QUAD_READ_ACROSS_Y
@ VKD3DSIH_WAVE_ACTIVE_BIT_AND
@ VKD3DSIH_IMM_ATOMIC_IMAX
@ VKD3DSIH_NOT
@ VKD3DSIH_SAMPLE_C_LZ_S
@ VKD3DSIH_IMM_ATOMIC_ALLOC
@ VKD3DSIH_GATHER4_C
@ VKD3DSIH_CONTINUEP
@ VKD3DSIH_SAMPLE_B
@ VKD3DSIH_DEFB
@ VKD3DSIH_MAD
@ VKD3DSIH_IMM_ATOMIC_AND
@ VKD3DSIH_ATAN
@ VKD3DSIH_TEXDEPTH
@ VKD3DSIH_CALLNZ
@ VKD3DSIH_DMIN
@ VKD3DSIH_WAVE_ACTIVE_BALLOT
@ VKD3DSIH_ADD
@ VKD3DSIH_DEF
@ VKD3DSIH_DCL_TGSM_STRUCTURED
@ VKD3DSIH_SAMPLE_LOD_S
@ VKD3DSIH_DCL_RESOURCE_STRUCTURED
@ VKD3DSIH_TEXBEML
@ VKD3DSIH_DEFI
@ VKD3DSIH_BFI
@ VKD3DSIH_DSY_COARSE
@ VKD3DSIH_MOVA
@ VKD3DSIH_INE
@ VKD3DSIH_DCL_INPUT_SIV
@ VKD3DSIH_MOVC
@ VKD3DSIH_WAVE_READ_LANE_FIRST
@ VKD3DSIH_HS_FORK_PHASE
@ VKD3DSIH_DSY
@ VKD3DSIH_UBFE
@ VKD3DSIH_ASIN
@ VKD3DSIH_MOV
@ VKD3DSIH_DTOU
@ VKD3DSIH_DMOVC
@ VKD3DSIH_DLT
@ VKD3DSIH_MAX
@ VKD3DSIH_MSAD
@ VKD3DSIH_ORD
@ VKD3DSIH_ISFINITE
@ VKD3DSIH_FIRSTBIT_HI
@ VKD3DSIH_DST
@ VKD3DSIH_WAVE_OP_MUL
@ VKD3DSIH_ULT
@ VKD3DSIH_FCALL
@ VKD3DSIH_IMIN
@ VKD3DSIH_STORE_RAW
@ VKD3DSIH_SWITCH_MONOLITHIC
@ VKD3DSIH_BUFINFO
@ VKD3DSIH_EXPP
@ VKD3DSIH_FTOU
@ VKD3DSIH_PHI
@ VKD3DSIH_WAVE_ALL_TRUE
@ VKD3DSIH_TEXLDL
@ VKD3DSIH_DSX_FINE
@ VKD3DSIH_IMM_ATOMIC_OR
@ VKD3DSIH_OR
@ VKD3DSIH_PHASE
@ VKD3DSIH_DGEO
@ VKD3DSIH_DCL_TESSELLATOR_DOMAIN
@ VKD3DSIH_CMP
@ VKD3DSIH_M3x2
@ VKD3DSIH_WAVE_OP_ADD
@ VKD3DSIH_ILT
@ VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT
@ VKD3DSIH_SAMPLE_GRAD_CL_S
@ VKD3DSIH_POW
@ VKD3DSIH_STORE_STRUCTURED
@ VKD3DSIH_GATHER4_PO_S
@ VKD3DSIH_USHR
@ VKD3DSIH_ENDLOOP
@ VKD3DSIH_EQU
@ VKD3DSIH_DCL
@ VKD3DSIH_DCL_UAV_TYPED
@ VKD3DSIH_WAVE_OP_IMIN
@ VKD3DSIH_CUT
@ VKD3DSIH_TEXM3x3
@ VKD3DSIH_IBFE
@ VKD3DSIH_WAVE_OP_MIN
@ VKD3DSIH_LD_S
@ VKD3DSIH_FRC
@ VKD3DSIH_ITOD
@ VKD3DSIH_IMM_ATOMIC_UMIN
@ VKD3DSIH_LD2DMS_S
@ VKD3DSIH_TEXM3x3TEX
@ VKD3DSIH_DCL_INDEX_RANGE
@ VKD3DSIH_SAMPLE_GRAD
@ VKD3DSIH_ELSE
@ VKD3DSIH_DCL_INPUT_PS_SGV
@ VKD3DSIH_EMIT
@ VKD3DSIH_DCL_CONSTANT_BUFFER
@ VKD3DSIH_LD
@ VKD3DSIH_DCL_INDEXABLE_TEMP
@ VKD3DSIH_FREM
@ VKD3DSIH_ITOI
@ VKD3DSIH_LABEL
@ VKD3DSIH_BREAKP
@ VKD3DSIH_GEO
@ VKD3DSIH_DP2ADD
@ VKD3DSIH_INEG
@ VKD3DSIH_ITOF
@ VKD3DSIH_GATHER4_C_S
@ VKD3DSIH_IMM_ATOMIC_CMP_EXCH
@ VKD3DSIH_SAMPLE_CL_S
@ VKD3DSIH_ROUND_Z
@ VKD3DSIH_IGE
@ VKD3DSIH_SINCOS
@ VKD3DSIH_FIRSTBIT_LO
@ VKD3DSIH_DEFAULT
@ VKD3DSIH_LRP
@ VKD3DSIH_UMIN
@ VKD3DSIH_ATOMIC_IMIN
@ VKD3DSIH_RET
@ VKD3DSIH_DP3
@ VKD3DSIH_BRANCH
@ VKD3DSIH_DSX
@ VKD3DSIH_IDIV
@ VKD3DSIH_GATHER4
@ VKD3DSIH_ABS
@ VKD3DSIH_LD_RAW_S
@ VKD3DSIH_SQRT
@ VKD3DSIH_DMUL
@ VKD3DSIH_M3x3
@ VKD3DSIH_WAVE_ALL_BIT_COUNT
@ VKD3DSIH_FIRSTBIT_SHI
@ VKD3DSIH_ATOMIC_IMAX
@ VKD3DSIH_HCOS
@ VKD3DSIH_LD_STRUCTURED_S
@ VKD3DSIH_DDIV
@ VKD3DSIH_DCL_TESSELLATOR_PARTITIONING
int spirv_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_scan_descriptor_info1 *scan_descriptor_info, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
Definition: spirv.c:10835
uint32_t vkd3d_parse_integer(const char *s)
size_t bytecode_put_bytes_unaligned(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
struct vkd3d_string_buffer * vkd3d_string_buffer_get(struct vkd3d_string_buffer_cache *list)
vkd3d_shader_sync_flags
@ VKD3DSSF_GLOBAL_UAV
@ VKD3DSSF_GROUP_SHARED_MEMORY
@ VKD3DSSF_THREAD_GROUP
@ VKD3DSSF_THREAD_GROUP_UAV
struct vkd3d_shader_src_param * vsir_program_create_outpointid_param(struct vsir_program *program)
Definition: ir.c:1336
void vkd3d_string_buffer_cleanup(struct vkd3d_string_buffer *buffer)
static bool data_type_is_bool(enum vkd3d_data_type data_type)
void vkd3d_string_buffer_truncate(struct vkd3d_string_buffer *buffer, size_t size)
int dxbc_writer_write(struct dxbc_writer *dxbc, struct vkd3d_shader_code *code)
Definition: dxbc.c:100
static bool vsir_sysval_semantic_is_clip_cull(enum vkd3d_shader_sysval_semantic sysval_semantic)
@ VSIR_ASM_FLAG_DUMP_ALL_INDICES
@ VSIR_ASM_FLAG_NONE
@ VSIR_ASM_FLAG_DUMP_TYPES
void vsir_src_param_init_label(struct vkd3d_shader_src_param *param, unsigned int label_id)
Definition: ir.c:204
size_t bytecode_reserve_bytes(struct vkd3d_bytecode_buffer *buffer, size_t size)
void vsir_program_cleanup(struct vsir_program *program)
Definition: ir.c:105
size_t bytecode_align(struct vkd3d_bytecode_buffer *buffer)
int vkd3d_string_buffer_print_f32(struct vkd3d_string_buffer *buffer, float f)
void shader_instruction_array_destroy(struct vkd3d_shader_instruction_array *instructions)
void vkd3d_string_buffer_clear(struct vkd3d_string_buffer *buffer)
int d3dbc_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags, struct vkd3d_shader_message_context *message_context, struct vsir_program *program)
Definition: d3dbc.c:1349
bool sm1_register_from_semantic_name(const struct vkd3d_shader_version *version, const char *semantic_name, unsigned int semantic_index, bool output, enum vkd3d_shader_register_type *type, unsigned int *reg)
Definition: d3dbc.c:1401
vkd3d_shader_register_precision
@ VKD3D_SHADER_REGISTER_PRECISION_DEFAULT
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_UINT_16
@ VKD3D_SHADER_REGISTER_PRECISION_COUNT
@ VKD3D_SHADER_REGISTER_PRECISION_INVALID
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_INT_16
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_10
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_16
enum vkd3d_result d3d_asm_compile(const struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, enum vsir_asm_flags flags)
Definition: d3d_asm.c:2370
void vsir_register_init(struct vkd3d_shader_register *reg, enum vkd3d_shader_register_type reg_type, enum vkd3d_data_type data_type, unsigned int idx_count)
Definition: ir.c:164
int hlsl_compile_shader(const struct vkd3d_shader_code *hlsl, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
Definition: hlsl.c:4496
int msl_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
Definition: msl.c:879
static uint32_t vsir_write_mask_32_from_64(uint32_t write_mask64)
bool vsir_instruction_init_with_params(struct vsir_program *program, struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode, unsigned int dst_count, unsigned int src_count)
Definition: ir.c:329
static bool register_is_scalar_constant_zero(const struct vkd3d_shader_register *reg)
void * shader_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)
vkd3d_tessellator_domain
@ VKD3D_TESSELLATOR_DOMAIN_INVALID
@ VKD3D_TESSELLATOR_DOMAIN_COUNT
@ VKD3D_TESSELLATOR_DOMAIN_TRIANGLE
@ VKD3D_TESSELLATOR_DOMAIN_LINE
@ VKD3D_TESSELLATOR_DOMAIN_QUAD
int glsl_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, const struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
Definition: glsl.c:2467
static bool register_is_ssa(const struct vkd3d_shader_register *reg)
bool sm4_register_from_semantic_name(const struct vkd3d_shader_version *version, const char *semantic_name, bool output, enum vkd3d_shader_register_type *type, bool *has_idx)
Definition: tpf.c:2998
static enum vkd3d_data_type vkd3d_data_type_from_component_type(enum vkd3d_shader_component_type component_type)
void vkd3d_shader_message_context_init(struct vkd3d_shader_message_context *context, enum vkd3d_shader_log_level log_level)
bool vsir_signature_find_sysval(const struct shader_signature *signature, enum vkd3d_shader_sysval_semantic sysval, unsigned int semantic_index, unsigned int *element_index)
Definition: ir.c:145
static size_t put_string(struct vkd3d_bytecode_buffer *buffer, const char *string)
static bool register_is_constant(const struct vkd3d_shader_register *reg)
void void vkd3d_shader_vwarning(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_error error, const char *format, va_list args)
vkd3d_shader_config_flags
@ VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION
void vsir_src_param_init(struct vkd3d_shader_src_param *param, enum vkd3d_shader_register_type reg_type, enum vkd3d_data_type data_type, unsigned int idx_count)
Definition: ir.c:190
int void vkd3d_string_buffer_release(struct vkd3d_string_buffer_cache *list, struct vkd3d_string_buffer *buffer)
void vsir_dst_param_init(struct vkd3d_shader_dst_param *param, enum vkd3d_shader_register_type reg_type, enum vkd3d_data_type data_type, unsigned int idx_count)
Definition: ir.c:272
@ VKD3D_DECL_USAGE_SAMPLE
@ VKD3D_DECL_USAGE_BLEND_WEIGHT
@ VKD3D_DECL_USAGE_BINORMAL
@ VKD3D_DECL_USAGE_TEXCOORD
@ VKD3D_DECL_USAGE_BLEND_INDICES
@ VKD3D_DECL_USAGE_TANGENT
@ VKD3D_DECL_USAGE_COLOR
@ VKD3D_DECL_USAGE_POSITION
@ VKD3D_DECL_USAGE_PSIZE
@ VKD3D_DECL_USAGE_TESS_FACTOR
@ VKD3D_DECL_USAGE_NORMAL
@ VKD3D_DECL_USAGE_DEPTH
@ VKD3D_DECL_USAGE_FOG
@ VKD3D_DECL_USAGE_POSITIONT
static size_t put_f32(struct vkd3d_bytecode_buffer *buffer, float value)
static void * vkd3d_find_struct_(const struct vkd3d_struct *chain, enum vkd3d_shader_structure_type type)
static uint32_t vsir_write_mask_64_from_32(uint32_t write_mask32)
static bool vsir_sysval_semantic_is_tess_factor(enum vkd3d_shader_sysval_semantic sysval_semantic)
void void vkd3d_shader_verror(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_error error, const char *format, va_list args)
void vkd3d_string_buffer_cache_init(struct vkd3d_string_buffer_cache *list)
vkd3d_primitive_type
@ VKD3D_PT_TRIANGLESTRIP
@ VKD3D_PT_LINESTRIP
@ VKD3D_PT_PATCH
@ VKD3D_PT_COUNT
@ VKD3D_PT_TRIANGLELIST
@ VKD3D_PT_TRIANGLELIST_ADJ
@ VKD3D_PT_TRIANGLEFAN
@ VKD3D_PT_LINESTRIP_ADJ
@ VKD3D_PT_UNDEFINED
@ VKD3D_PT_LINELIST_ADJ
@ VKD3D_PT_TRIANGLESTRIP_ADJ
@ VKD3D_PT_POINTLIST
@ VKD3D_PT_LINELIST
vkd3d_shader_conditional_op
@ VKD3D_SHADER_CONDITIONAL_OP_NZ
@ VKD3D_SHADER_CONDITIONAL_OP_Z
enum vkd3d_result vsir_program_transform(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context)
Definition: ir.c:8324
const char * shader_get_type_prefix(enum vkd3d_shader_type type)
Definition: d3d_asm.c:1737
void vkd3d_shader_parser_error(struct vkd3d_shader_parser *parser, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(3
int preproc_lexer_parse(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
vkd3d_shader_dst_modifier
@ VKD3DSPDM_SATURATE
@ VKD3DSPDM_NONE
@ VKD3DSPDM_MASK
@ VKD3DSPDM_PARTIALPRECISION
@ VKD3DSPDM_MSAMPCENTROID
static unsigned int vkd3d_compact_swizzle(uint32_t swizzle, uint32_t write_mask)
void vkd3d_shader_parser_warning(struct vkd3d_shader_parser *parser, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(3
int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, struct shader_signature *signature)
Definition: dxbc.c:493
static bool vsir_register_is_label(const struct vkd3d_shader_register *reg)
#define VKD3DSP_WRITEMASK_0
void vkd3d_shader_message_context_trace_messages_(const struct vkd3d_shader_message_context *context, const char *function)
void shader_signature_cleanup(struct shader_signature *signature)
void set_u32(struct vkd3d_bytecode_buffer *buffer, size_t offset, uint32_t value)
enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enum vkd3d_shader_sysval_semantic sysval, unsigned int index)
Definition: spirv.c:199
bool sm1_usage_from_semantic_name(const char *semantic_name, uint32_t semantic_index, enum vkd3d_decl_usage *usage, uint32_t *usage_idx)
Definition: d3dbc.c:1469
#define DXBC_MAX_SECTION_COUNT
int fx_parse(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
Definition: fx.c:3789
#define VKD3DSP_WRITEMASK_1
void vsir_instruction_init(struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode)
Definition: ir.c:321
bool shader_instruction_array_clone_instruction(struct vkd3d_shader_instruction_array *instructions, unsigned int dst, unsigned int src)
void vkd3d_shader_vnote(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_log_level level, const char *format, va_list args)
#define VKD3D_DVEC2_SIZE
vsir_control_flow_type
@ VSIR_CF_BLOCKS
@ VSIR_CF_STRUCTURED
bool sm4_sysval_semantic_from_semantic_name(enum vkd3d_shader_sysval_semantic *sysval_semantic, const struct vkd3d_shader_version *version, bool semantic_compat_mapping, enum vkd3d_tessellator_domain domain, const char *semantic_name, unsigned int semantic_idx, bool output, bool is_patch_constant_func)
Definition: tpf.c:3100
@ VKD3D_MD5_DXBC
@ VKD3D_MD5_STANDARD
uint64_t vkd3d_shader_init_config_flags(void)
static struct vkd3d_shader_src_param * shader_src_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)
static bool register_is_numeric_array(const struct vkd3d_shader_register *reg)
static enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval(enum vkd3d_shader_sysval_semantic sysval)
void dxbc_writer_init(struct dxbc_writer *dxbc)
Definition: dxbc.c:36
void void vkd3d_shader_parser_init(struct vkd3d_shader_parser *parser, struct vsir_program *program, struct vkd3d_shader_message_context *message_context, const char *source_name)
int vsir_program_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
enum vkd3d_result vsir_program_validate(struct vsir_program *program, uint64_t config_flags, const char *source_name, struct vkd3d_shader_message_context *message_context)
Definition: ir.c:8169
static size_t bytecode_get_size(struct vkd3d_bytecode_buffer *buffer)
void free_dxbc_shader_desc(struct dxbc_shader_desc *desc)
Definition: dxbc.c:573
bool shader_instruction_array_reserve(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)
#define VKD3DSP_WRITEMASK_2
int vkd3d_string_buffer_printf(struct vkd3d_string_buffer *buffer, const char *format,...) VKD3D_PRINTF_FUNC(2
enum vkd3d_result vsir_program_transform_early(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context)
Definition: ir.c:8305
static struct vkd3d_shader_dst_param * shader_dst_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)
vkd3d_shader_rel_op
@ VKD3D_SHADER_REL_OP_LT
@ VKD3D_SHADER_REL_OP_GT
@ VKD3D_SHADER_REL_OP_EQ
@ VKD3D_SHADER_REL_OP_GE
@ VKD3D_SHADER_REL_OP_NE
@ VKD3D_SHADER_REL_OP_LE
void dxbc_writer_add_section(struct dxbc_writer *dxbc, uint32_t tag, const void *data, size_t size)
Definition: dxbc.c:41
size_t bytecode_put_bytes(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const char *function)
#define VKD3D_VEC4_SIZE
void vkd3d_shader_trace_text_(const char *text, size_t size, const char *function)
static bool vkd3d_shader_ver_le(const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
static size_t put_u32(struct vkd3d_bytecode_buffer *buffer, uint32_t value)
static uint32_t vsir_swizzle_32_from_64(uint32_t swizzle64)
vkd3d_result
Definition: vkd3d_types.h:41
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define const
Definition: zconf.h:233