Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/src/util/dyn_spirv_cross.h
6247 views
1
// SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <[email protected]>
2
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
3
4
#pragma once
5
6
#include "spirv_cross_c.h"
7
8
class Error;
9
10
#define SPIRV_CROSS_FUNCTIONS(X) \
11
X(spvc_context_create) \
12
X(spvc_context_destroy) \
13
X(spvc_context_set_error_callback) \
14
X(spvc_context_parse_spirv) \
15
X(spvc_context_create_compiler) \
16
X(spvc_compiler_create_compiler_options) \
17
X(spvc_compiler_create_shader_resources) \
18
X(spvc_compiler_get_execution_model) \
19
X(spvc_compiler_options_set_bool) \
20
X(spvc_compiler_options_set_uint) \
21
X(spvc_compiler_install_compiler_options) \
22
X(spvc_compiler_require_extension) \
23
X(spvc_compiler_compile) \
24
X(spvc_compiler_set_name) \
25
X(spvc_compiler_set_decoration) \
26
X(spvc_compiler_get_decoration) \
27
X(spvc_compiler_get_member_name) \
28
X(spvc_compiler_get_member_decoration) \
29
X(spvc_compiler_get_declared_struct_size) \
30
X(spvc_compiler_get_declared_struct_member_size) \
31
X(spvc_compiler_get_active_interface_variables) \
32
X(spvc_compiler_create_shader_resources_for_active_variables) \
33
X(spvc_compiler_get_type_handle) \
34
X(spvc_resources_get_resource_list_for_type)
35
36
#ifdef _WIN32
37
#define SPIRV_CROSS_HLSL_FUNCTIONS(X) \
38
X(spvc_compiler_hlsl_add_resource_binding) \
39
X(spvc_compiler_hlsl_add_vertex_attribute_remap)
40
#else
41
#define SPIRV_CROSS_HLSL_FUNCTIONS(X)
42
#endif
43
#ifdef __APPLE__
44
#define SPIRV_CROSS_MSL_FUNCTIONS(X) X(spvc_compiler_msl_add_resource_binding)
45
#else
46
#define SPIRV_CROSS_MSL_FUNCTIONS(X)
47
#endif
48
49
namespace dyn_libs {
50
extern bool OpenSpirvCross(Error* error);
51
52
#define ADD_FUNC(F) extern decltype(&::F) F;
53
SPIRV_CROSS_FUNCTIONS(ADD_FUNC)
54
SPIRV_CROSS_HLSL_FUNCTIONS(ADD_FUNC)
55
SPIRV_CROSS_MSL_FUNCTIONS(ADD_FUNC)
56
#undef ADD_FUNC
57
58
} // namespace dyn_libs
59